重複の可能性:
C# 'var' と特定の型のパフォーマンスの比較
以下のコードを書くと:
List<string> list = new List<string>();
resharper はそれを
var list = new List<string>();
なんで?違いはなんですか?もっと分かりやすいですか?ないと思います。
使用var
すると、RAM のコストが他のコストより高くなります。ではない?
重複の可能性:
C# 'var' と特定の型のパフォーマンスの比較
以下のコードを書くと:
List<string> list = new List<string>();
resharper はそれを
var list = new List<string>();
なんで?違いはなんですか?もっと分かりやすいですか?ないと思います。
使用var
すると、RAM のコストが他のコストより高くなります。ではない?
それらは同じです。var
暗黙的に型付けされます。
Visual Studio でキーワードvar
にカーソルを合わせると、オブジェクトのタイプ (この場合は ) が表示されますList<string>
。の使用は、var
コードをクリーンアップするためだけです。 type のオブジェクトを作成していることはすでにわかっているList<string>
ため、次のように入力するのは冗長だと考える人もいます。
List<string> list = new List<string>();
コンパイラはオブジェクトの型を既に認識しているため、パフォーマンスの違いはありません。var の個人的な好みを主に使用します。必要に応じて使用でき、パフォーマンスに影響はありません。
Eric Lippert のすばらしいブログ記事がvar
ここにあります。
私はあなたが混乱var
していると思います とdynamic
、これらは2つのまったく異なるものです。型は、実行時にさまざまな型のdynamic
値を割り当てることができる型です。
var list = new List<int>();
コンパイラは、右手の戻り値の型を使用して、リストの型を決定します。この場合List<string>
。だから違いはありません。変数を初期化する簡単な方法です。
フィールドを宣言するときは var を使用できないことに注意してください。
まったく違いはありません。注意すべき唯一のことは、var
キーワードが動的オブジェクトを作成しないことです。これは依然として厳密に型指定されたオブジェクトですが、コンパイラは変数宣言ステートメントの右側のオペランドから型を推測できます。
これは、「var」を使用するとリファクタリングが容易になるためです。たとえば、メソッドから型「Foo」を返し、それを変換して代わりにインターフェイスを返す場合、クライアント コードを変更する必要はありません。新しい型が推測され、正しく使用されます。