web-dev-qa-db-ja.com

.NET 3.5を対象とするコードでオプションのパラメーターを使用できますか?

C#4.0の新しいオプションのパラメーター機能を使用するライブラリを作成したいと考えていますが、3.5バージョンのフレームワークをターゲットにしたいと考えています。これは可能ですか?

オプションのパラメーターは、拡張メソッドと同じように糖衣構文ですか?

32
Charles Graham

VS2010 RCを使用して、C#でオプションのパラメーターを使用する.NET3.5アプリケーションを作成することができました。

そうです、それはすべて構文糖衣についてです。

25

VS 2010は、C#for .NET3.5ソリューションのオプションのパラメーターをサポートしています。ただし、注意点の1つは、コマンドラインコンパイラがエラーを報告することです。

したがって、自動化されたビルドを実行している場合(NANTを使用するか、コマンドラインコンパイラを使用する場合)、ビルドは失敗します。

13
demius

Jon Skeetのように、「機能 'オプションのパラメーター'は3.0C#言語仕様の一部ではないため、使用できません」と表示されていました。ただし、VisualStudioのRTMバージョンでは、プロジェクトのプロパティ->ビルド->詳細設定で言語バージョンを「デフォルト」に選択できます。これでうまくいきました。

5
Lee Richardson

アセンブリがv4(VS2010など)の開発環境内でビルドされている限り、以前のバージョンのターゲットフレームワークでオプションの名前付きパラメーターを使用できます。ただし、この場合、ターゲットフレームワークのコンパイラが使用されるため、実行時のコンパイルまたはWebサイトの公開に注意する必要があります。また、古いフレームワークのコンパイラは、オプションの名前付きパラメータの構文を理解していないため、コンパイラエラーが発生します。

3
Frans Harinck

プロジェクトのプロパティに移動-> [ビルド]タブ-> [詳細設定]ボタンをクリック->言語バージョンを[デフォルト]に設定->保存->満足;)

3
devi

ここにVS2010をインストールして確認していませんが、これは純粋に言語機能であるため、対象となるフレームワークに関係なく使用できるはずです。

編集:これを見ると link (および他のいくつか)、オプションのパラメーターがilの[opt]属性を持つメソッド引数にコンパイルされているようです。このパラメーターが以前のバージョンのclrに存在したかどうかはわかりませんが、それでも存在すると思います。

2
Timothy Carter

.NET 3.5でオプションのパラメーターを使用する場合、VB.NETにはオプションのパラメーターがあります。

0
Joe Chung