2012-02-10 12 views
3

パラメータリスト内のオプションのパラメータを持っているいくつかの開発者を追加する方法:奇妙なコンパイラの動作 - オプションのパラメータ私のプロジェクトで

public static string GeneratetPopupCall(string pageName,bool withEscapeChar = false) 

私は、オプションのパラメータは、C#4.0の一部であることを知っています。 しかし、私たちのプロジェクトは.net 3.5を対象としています。 (C#3.0)

私の質問は
3.5がオプションのパラメータをサポートしていないとコンパイルするのはなぜですか?なぜそれはコンパイルや構文エラーではないのですか?

+4

最初に物事を読むhttp://stackoverflow.com/questions/247621/what-are-the-correct-version-numbers-for-c – AakashM

+0

あなたは正しい、私は固定版nb。 –

答えて

7

3.5フレームワークを対象としたコンパイラ4.0 コンパイラを使用しています。

これは、ランタイム2.0互換のILにコンパイルされます。

+0

なので、3.5フレームワークの対象となるプロジェクトには、4.0からの新機能を使用できますか? –

+0

@MarekKwiendacz - コンパイラが正しい2.0ランタイムILを生成できる場合のみ。 – Oded

+0

しかし、フレームワーク4.0のネイティブCLRはCLR 4です。CLR 2で新しい機能を使用できるかどうかを確認する方法はありますか?コンパイルして実行しようとする以外はありません。 –

2

Visual Studio 2010を使用している場合は、より古いパラメータを使用することもできます(.NET Frameworks、4.0)。

より多くの情報を使用すると、特定のプロジェクトのための言語バージョンを指定することができるのVisual Studio内here

1

を見つけることができます(プロジェクトのプロパティ - >ビルド - >詳細設定)。 Visual Studioでは、v4.0コンパイラを使用してフレームワークのv3.5をターゲットにしています。

これは機能しますが、他の状況で問題を引き起こす可能性があります。たとえば、異なるバージョンのコンパイラを呼び出す自動ビルド環境は明らかに失敗します。ちょうど何かを気にする何か...