5

このコードは、フレームワーク 3.5 プロジェクトの VS 2010 で正常にコンパイルされます (私はそれをトリプル チェックしました)。

    public LoggingClient(string uri = "net.msmq://localhost/logging"){...}

なんで?C# 4 仕様 (ドキュメント バージョン) のセクション 21.1 には、これが下位互換性を持つべきであると書かれているものは何もありません。コンパイルエラーが発生しないのはどうしてですか? これは、状況によってはサイレントに失敗しますか?

4

2 に答える 2

8

[プロジェクト+プロパティ]、[ビルド]タブ、下にスクロール、[詳細]。ソースコードの互換性を維持したい場合は、言語バージョンを「C#3.0」に変更できます。

ただし、使用する.NETのターゲットバージョンに関係なく、VS2010ではC#4.0コンパイラを使用しています。コンパイラーILの出力は、.NET4.0では変更されていません。いいえ、ダイナミックを使用することはできません。.NET4.0のみのサポートアセンブリ(Microsoft.CSharp.dll)が必要です。

于 2010-07-09T03:03:51.377 に答える
3

オプションのパラメーターは単なる構文糖衣です。呼び出しサイトで指定しない場合、コンパイラーはデフォルト値を入力します。何をするにも、.NET フレームワーク自体に依存することはありません。

.NET 3.5 をターゲットとするコードでオプションのパラメーターを使用できますか?も参照してください。

于 2010-07-09T02:38:20.837 に答える