2011-09-14 25 views
2

ターゲットフレームワークがバージョン3.5のアプリケーションを開発しています。しかし、コードを見て、私はデフォルトのパラメータを使用してメソッドを見つけた:C#バージョンの互換性

public void Contact(string name, string email, string phone, string phoneAreaCode = "") 
{ 
    //... 
} 

となってしまった。

言語機能はフレームワークのバージョンに依存しません。両方の関係は何ですか?そして、なぜこれが上記のコードですか?

EDIT:私はVS2010で2つのプロジェクト(クラスライブラリとコンソール)を作成しました。どちらも.NET 2.0 Frameworkをタグ付けしています。クラスライブラリでは、オプションの文字列パラメータを使用してメソッドを作成しました。私は問題なしで、パラメータを渡すかどうかにかかわらず、コンソールアプリケーションでそれを使用しました。これはVS2010と関係がありますか?そして、 "VS2010"とは、C#コンパイラ4.0を意味しますか?

+0

Visual Studio 2008/2010で.NET 2を対象とする場合、C#3の自動プロパティを使用できることにも注意してください。 – RichardOD

答えて

4

コンパイラは情報を出力しますが、3.5ランタイムはそれを使用せず、無視されます。

thisブログの記事を参照してください。これらの質問は - onetwoです。本質的には

、3.5ランタイムがこれを見ている:

public void Contato(string nome, string email, string telefone, string ddd) 
{ 
    //... 
} 
+0

私はVS2010で2つのプロジェクト(クラスライブラリとコンソール)を作成しました。どちらも.NET 2.0 Frameworkをタグ付けしています。クラスライブラリでは、オプションの文字列パラメータを使用してメソッドを作成しました。私は、(リンクされた記事にもかかわらず)パラメータを渡すかどうかにかかわらず、コンソールアプリで問題なく使用しました。これはVS2010と関係がありますか? – Raphael

+0

@Raphael - コメントはコードサンプルには適していません。別の質問がある場合は、新しい質問をしてみませんか? – Oded

+0

新しい質問はありませんが、コードを使用しないようにコメントを編集しました。 – Raphael

0

VS2010を使用している必要があります...サポートしているためです。

1

言語機能は、使用しているのVisual Studioのバージョンに依存しています。 .Net Frameworkは、.Netの関数とクラスが利用できるものを指定します。

Visual Studio 2010を使用しているため、上記のコードは可能です。アセンブリの対象となる.Netバージョンに関係なく、新しいコードエディタのすべての機能を使用できます。しかし、.net 3.5コードで.net 4.0クラスまたは関数を使用しようとすると、コンパイラエラーが発生します。

関連する問題