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