私は、C#4.0の新しいオプションパラメータ機能を使用するライブラリを作成したいと考えていますが、3.5バージョンのフレームワークを対象にしたいと考えています。これは可能ですか?.NET 3.5をターゲットとするコードでオプションのパラメータを使用できますか?
オプションの構文の砂糖は、拡張メソッドと同じ方法ですか?
私は、C#4.0の新しいオプションパラメータ機能を使用するライブラリを作成したいと考えていますが、3.5バージョンのフレームワークを対象にしたいと考えています。これは可能ですか?.NET 3.5をターゲットとするコードでオプションのパラメータを使用できますか?
オプションの構文の砂糖は、拡張メソッドと同じ方法ですか?
VS2010 RCでは、C#でオプションのパラメータを使用する.NET 3.5アプリケーションを作成できました。
はい、それはすべて構文的な砂糖です。
ここにVS2010がインストールされていないことを確認していますが、これは純粋に言語機能なので、対象となるフレームワークに関係なく使用できるはずです。
編集:このlink(および他のいくつかを参照)を見ると、オプションのパラメータは、メソッドの引数をilの[opt]属性でコンパイルするように見えます。このパラメータが以前のバージョンのclrに存在するかどうかはわかりませんが、それでも私の推測はそうであると思います。
.NET 3.5でオプションのパラメータを使用する場合、VB.NETにはオプションのパラメータがあります。
ええ、私は知っています。私はオプションのパラメータを愛するが、VBを嫌う。 ;)さらに、1つまたは2つのクラスに対してVBのものだけが必要な場合は、2つの言語のアプリケーションを持つことは難しいことです。 –
VS 2010は、.NET 3.5ソリューション用のC#のオプションパラメータをサポートしています。しかし、1つの注意点は、コマンドラインコンパイラがエラーを報告することです。
したがって、実行時に自動ビルドがある場合、 - NANTなどを使用してコマンドラインコンパイラを使用すると、ビルドが失敗します。
Jon Skeetと同様に、「Feature 'オプションパラメータ」は3.0 C#言語仕様の一部ではないため使用できません。ただし、Visual StudioのRTMバージョンでは、プロジェクトのプロパティ - >ビルド - >詳細で言語バージョンを「デフォルト」に選択できます。それは私のために働くことになった。
v4の開発環境(f.e. VS2010)でアセンブリがビルドされている限り、以前のバージョンの対象フレームワークでは、オプションパラメータと名前付きパラメータを使用できます。しかし、この場合、対象となるフレームワークのコンパイラが使用されるように、ランタイムのコンパイルやウェブサイトの公開を認識しておく必要があります。また、古いフレームワークのコンパイラはオプションのパラメタと名前付きパラメタの構文を理解していないため、コンパイラエラーが発生します。
私は、Fransが言及していることは重要なポイントだと思います。以前のバージョンのターゲットフレームワークでオプションのパラメータを使用するメソッドを呼び出すデスクトップアプリケーションをコンパイルする場合は、VS2012内で2.0と言いましょう。すべて正常です。しかし、同じメソッドを呼び出す旧バージョンのターゲットフレームワークでWebアプリケーションを構築することはできません。 – heuristican
Goがプロパティを投影する - >タブをビルド - >ボタン「詳細」をクリック - >「デフォルト」に設定された言語バージョン - >保存 - >幸せになる。
はええ、私はこれが事実であると思うだろう)しかし、私はそれが私にこれを与えていない場合はまだRTM isan'tときにVS2010をインストールすることを望んでいません。 –
C#4.0では、VBがその目的で使用する属性が再利用されるため、1.0以降で使用されています。 –