varとは
C#3.0から利用可能となった暗黙の型指定。
メソッド内のローカル変数を宣言する際、
型名の代わりにvarを使用するとコンパイラが
自動で型を判断してくれる。
例 Dictionaryをvarに書き直してみる。
Dictionaryを使用した場合
static void Main(string[] args)
{
Dictionary<string, int> dict = new Dictionary<string, int>();
dict.Add("test1",1);
dict.Add("test2",2);
Console.WriteLine(dict["test2"]);
}
varを使用した場合
static void Main(string[] args)
{
var dict = new Dictionary<string, int>();
dict.Add("test1",1);
dict.Add("test2",2);
Console.WriteLine(dict["test2"]);
}
例のようにvarを使用すればコードを短く書けるので
可読性が上がり非常に良いと思われる。
MSDNのコーディング規約では以下のように記されている。
・変数の型が割り当ての右側から明らかである場合、または厳密な型が重要でない場合は、ローカル変数の暗黙の型指定を使用します。
・割り当ての右側から型が明らかではない場合、var を使用しないでください。 メソッド名から型が明らかであると想定しないでください。 変数の型は、new 演算子または明示的なキャストの場合に明らかであると見なされます。
・変数の型を指定するときに変数名に頼らないでください。 変数名が正しくない場合があります。
(var inputInt = Console.ReadLine();などStringを格納するのに変数名にIntが使われている場合)
・dynamic の代わりに var を使用しないようにしてください。
・for ループでループ変数の型を決定するときは、暗黙の型指定が使用されます。
・foreach ループでループ変数の型を決定するために暗黙の型指定を使用しないでください。
まとめ
変数名に型名を入れるなどをしなければ、
世の中のトレンドとしてvarを使う流れになっている。
また、変数を初期化しない。
nullで初期化するなどは
コンパイルエラーを起こしてしまうため、
その点は注意したい。
参考文献
この記事は以下の書籍を参考にして執筆しました。
実戦で役立つ
C#プログラミングのイディオム/定石&パターン