2009-07-31 8 views

答えて

25

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

はい、それはすべて構文的な砂糖です。

2

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

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

+0

はええ、私はこれが事実であると思うだろう)しかし、私はそれが私にこれを与えていない場合はまだRTM isan'tときにVS2010をインストールすることを望んでいません。 –

+2

C#4.0では、VBがその目的で使用する属性が再利用されるため、1.0以降で使用されています。 –

0

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

+1

ええ、私は知っています。私はオプションのパラメータを愛するが、VBを嫌う。 ;)さらに、1つまたは2つのクラスに対してVBのものだけが必要な場合は、2つの言語のアプリケーションを持つことは難しいことです。 –

13

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

したがって、実行時に自動ビルドがある場合、 - NANTなどを使用してコマンドラインコンパイラを使用すると、ビルドが失敗します。

+1

ええと、この問題を回避するには、4.0フレームワークディレクトリにあるMSBuildを使用するように自動ビルドを変更することです。 – Jeff

+0

私は同じ問題に直面しています。実際には、コマンドラインを使用してmsbuildを実行しても機能しません.4.0フレームワークディレクトリのmsbuildを使用しています。私も/toolsversion:4.0パラメータと/p:TargetFrameworkVersion=v4.5を試しましたが、運はありません!私はCS1644エラーが発生し続ける! アイデア – papadi

5

Jon Skeetと同様に、「Feature 'オプションパラメータ」は3.0 C#言語仕様の一部ではないため使用できません。ただし、Visual StudioのRTMバージョンでは、プロジェクトのプロパティ - >ビルド - >詳細で言語バージョンを「デフォルト」に選択できます。それは私のために働くことになった。

3

v4の開発環境(f.e. VS2010)でアセンブリがビルドされている限り、以前のバージョンの対象フレームワークでは、オプションパラメータと名前付きパラメータを使用できます。しかし、この場合、対象となるフレームワークのコンパイラが使用されるように、ランタイムのコンパイルやウェブサイトの公開を認識しておく必要があります。また、古いフレームワークのコンパイラはオプションのパラメタと名前付きパラメタの構文を理解していないため、コンパイラエラーが発生します。

+0

私は、Fransが言及していることは重要なポイントだと思います。以前のバージョンのターゲットフレームワークでオプションのパラメータを使用するメソッドを呼び出すデスクトップアプリケーションをコンパイルする場合は、VS2012内で2.0と言いましょう。すべて正常です。しかし、同じメソッドを呼び出す旧バージョンのターゲットフレームワークでWebアプリケーションを構築することはできません。 – heuristican

3

Goがプロパティを投影する - >タブをビルド - >ボタン「詳細」をクリック - >「デフォルト」に設定された言語バージョン - >保存 - >幸せになる。

関連する問題