0

重複の可能性:
C# 'var' と特定の型のパフォーマンスの比較

以下のコードを書くと:

List<string> list = new List<string>();  

resharper はそれを

var list = new List<string>();          

なんで?違いはなんですか?もっと分かりやすいですか?ないと思います。

使用varすると、RAM のコストが他のコストより高くなります。ではない?

4

4 に答える 4

7

それらは同じです。var暗黙的に型付けされます。

Visual Studio でキーワードvarにカーソルを合わせると、オブジェクトのタイプ (この場合は ) が表示されますList<string>。の使用は、varコードをクリーンアップするためだけです。 type のオブジェクトを作成していることはすでにわかっているList<string>ため、次のように入力するのは冗長だと考える人もいます。

List<string> list = new List<string>();

コンパイラはオブジェクトの型を既に認識しているため、パフォーマンスの違いはありません。var の個人的な好みを主に使用します。必要に応じて使用でき、パフォーマンスに影響はありません。

Eric Lippert のすばらしいブログ記事がvar ここにあります

私はあなたが混乱varしていると思います とdynamic、これらは2つのまったく異なるものです。型は、実行時にさまざまな型のdynamic値を割り当てることができる型です。

于 2012-10-17T19:43:27.393 に答える
3
var list = new List<int>();

コンパイラは、右手の戻り値の型を使用して、リストの型を決定します。この場合List<string>。だから違いはありません。変数を初期化する簡単な方法です。

フィールドを宣言するときは var を使用できないことに注意してください。

于 2012-10-17T19:46:05.653 に答える
1

まったく違いはありません。注意すべき唯一のことは、varキーワードが動的オブジェクトを作成しないことです。これは依然として厳密に型指定されたオブジェクトですが、コンパイラは変数宣言ステートメントの右側のオペランドから型を推測できます。

于 2012-10-17T19:44:25.083 に答える
0

これは、「var」を使用するとリファクタリングが容易になるためです。たとえば、メソッドから型「Foo」を返し、それを変換して代わりにインターフェイスを返す場合、クライアント コードを変更する必要はありません。新しい型が推測され、正しく使用されます。

于 2012-10-17T19:46:48.353 に答える