C#4.0の新しいオプションのパラメーター機能を使用するライブラリを作成したいと考えていますが、3.5バージョンのフレームワークをターゲットにしたいと考えています。これは可能ですか?
オプションのパラメーターは、拡張メソッドと同じように糖衣構文ですか?
VS2010 RCを使用して、C#でオプションのパラメーターを使用する.NET3.5アプリケーションを作成することができました。
そうです、それはすべて構文糖衣についてです。
VS 2010は、C#for .NET3.5ソリューションのオプションのパラメーターをサポートしています。ただし、注意点の1つは、コマンドラインコンパイラがエラーを報告することです。
したがって、自動化されたビルドを実行している場合(NANTを使用するか、コマンドラインコンパイラを使用する場合)、ビルドは失敗します。
Jon Skeetのように、「機能 'オプションのパラメーター'は3.0C#言語仕様の一部ではないため、使用できません」と表示されていました。ただし、VisualStudioのRTMバージョンでは、プロジェクトのプロパティ->ビルド->詳細設定で言語バージョンを「デフォルト」に選択できます。これでうまくいきました。
アセンブリがv4(VS2010など)の開発環境内でビルドされている限り、以前のバージョンのターゲットフレームワークでオプションの名前付きパラメーターを使用できます。ただし、この場合、ターゲットフレームワークのコンパイラが使用されるため、実行時のコンパイルまたはWebサイトの公開に注意する必要があります。また、古いフレームワークのコンパイラは、オプションの名前付きパラメータの構文を理解していないため、コンパイラエラーが発生します。
プロジェクトのプロパティに移動-> [ビルド]タブ-> [詳細設定]ボタンをクリック->言語バージョンを[デフォルト]に設定->保存->満足;)
ここにVS2010をインストールして確認していませんが、これは純粋に言語機能であるため、対象となるフレームワークに関係なく使用できるはずです。
編集:これを見ると link (および他のいくつか)、オプションのパラメーターがilの[opt]属性を持つメソッド引数にコンパイルされているようです。このパラメーターが以前のバージョンのclrに存在したかどうかはわかりませんが、それでも存在すると思います。
.NET 3.5でオプションのパラメーターを使用する場合、VB.NETにはオプションのパラメーターがあります。