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

StackOverflow https://stackoverflow.com/questions/1210679

  •  06-07-2019
  •  | 
  •  

質問

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

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

役に立ちましたか?

解決

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

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

他のヒント

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

そのため、実行中にビルドを自動化した場合、NANTまたはコマンドラインコンパイラを使用して他の何かを使用すると、ビルドは失敗します。

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

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

プロジェクトのプロパティに移動-> [ビルド]タブ-> [詳細設定]ボタンをクリックします->言語バージョンを「デフォルト」に設定->保存->幸せになります;)

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top