1

次の2つのステートメントの違いと、どちらをいつ使用する必要があるかを簡単に説明できますか?

たとえば、Person クラスがあり、Person クラスを別のクラスでインスタンス化したい

Person person = new Person();

var person = new Person();
4

4 に答える 4

2

どちらも同じ MSIL コードにコンパイルされます。唯一の違いは、ソース コードを記述する際の利便性です。p後での型を変更することにした場合Person、コンストラクター呼び出しで 1 回置換するだけでよく、使用時に変数宣言をそのままにしておくことができますvar

とはいえ、行の先頭でタイプがすぐにvar見えなくなるため、読みやすさがわずかに低下します。したがって、 の使用は、複雑にネストされたジェネリック型の場合など、型付けを実際に節約pできる場合に限定してください。var

変数をすぐに初期化しない場合(変数が宣言されている同じステートメントで)、varコンパイラが変数の型を推測できないため、使用できないことに注意してください。

于 2013-07-31T10:26:55.413 に答える
2

違いはありません。これは単なる構文糖衣です:

…暗黙的に型指定されたローカル変数は、自分で型を宣言したかのように厳密に型指定されますが、型はコンパイラによって決定されます…</p>

http://msdn.microsoft.com/library/bb383973.aspx

于 2013-07-31T10:27:56.927 に答える
1

このドキュメントを参照してください

1 つ目は明示的な宣言で、2 つ目は暗黙的な宣言です (コンパイラがオブジェクトを決定します)。それ以外の場合は同等です。

于 2013-07-31T10:27:10.867 に答える
0

ここに違いはありません。コンパイル時にvar変換されます。Person私は通常var、コードのリファクタリングを高速化するために使用しpますvar

于 2013-07-31T10:26:42.193 に答える