重複の可能性:
C#3.0でのvarキーワードの利点
昨日、MSからの推奨事項に出くわしました。可能な場合は、varを使用する必要があります。
http://msdn.microsoft.com/en-us/library/ff926074.aspx
正しいタイプを使用すると、コードを文書化するのに役立ち、コンパイル時にバグを見つけるのにも役立つといつも思っていました。
この推奨の背後にある理由は何ですか?
最高のトーマス
重複の可能性:
C#3.0でのvarキーワードの利点
昨日、MSからの推奨事項に出くわしました。可能な場合は、varを使用する必要があります。
http://msdn.microsoft.com/en-us/library/ff926074.aspx
正しいタイプを使用すると、コードを文書化するのに役立ち、コンパイル時にバグを見つけるのにも役立つといつも思っていました。
この推奨の背後にある理由は何ですか?
最高のトーマス
推奨事項は次のとおりです。
変数の型が割り当ての右側から明らかな場合、または正確な型が重要でない場合は、ローカル変数に暗黙的な型指定を使用します。
常にではありません。
また、それは持っています:
割り当ての右側からタイプがわからない場合は、varを使用しないでください。
同じソースからの例:
// When the type of a variable is not clear from the context, use an
// explicit type.
int var4 = ExampleClass.ResultSoFar();
暗黙の型付けを使用することは、変数が強く型付けされていないことを意味するわけではありません。これは、コンパイラがステートメントの右側から型を暗示することを意味します。
var i = 1;
i
タイプを持つものとして定義されint
ます。それは言うこととまったく同じint i = 1;
ですが、タイプが暗示されています。
同様に、次のコードははるかに読みやすくなっています。
var pairs = new List<pair<int, IEnumerable<string>>>();
入力する必要がある場合よりも:
List<pair<int, IEnumerable<string>>> pairs = new List<pair<int, IEnumerable<string>>>();
それでも結果はまったく同じです。
キーストロークを削減するのは、シンタックスシュガーです。
コンパイラーは、RHSで式を評価することにより、LHSで変数のタイプを導き出します。
したがって、以下のようなコード:
var fStream = new FileStream("file", Filemode.Open);
コンパイラによって次のように変換されます。
Filestream fstream = new FileStream("file", Filemode.Open);
コンパイラーは私たちのタイピングのいくつかをとても親切にやってくれます。
僕のバカゲ:
var
コードが一般的なものである場合は、を使用する必要があります。つまり、タイプが将来変更された場合におそらく正しく機能するかどうか。
コンパイラがすべての作業を行うため、varを使用してもパフォーマンスが低下することはありません。入力するよりも短いMyDatabaseModel model
です。
また、varを使用するもう1つの理由は、右側でそれがどのようなタイプであるかを確認できることです。
これを使用する最後の理由は、匿名タイプ用です(タイプがわからない場合はいつでも)。