var
型ではなく、変数を特別なものにするものでもありません。代入演算子の右側にある初期化式を分析することにより、コンパイラにATCOMPILETIMEで変数の型を推測するように指示します。
これらの2つの式は同等です。
Tree t = new Tree();
と
var t = new Tree();
個人var
的には、タイプ名が右側に明示的に記載されている場合、または正確なタイプが複雑で、LINQクエリから返される結果とはあまり関係がない場合に使用することを好みます。これらのLINQの結果は、多くの場合、さらに処理される単なる中間結果です。
var x = new Dictionary<string, List<int>>();
次のステートメントよりも読みやすく、しかも非常に明確です。
Dictionary<string, List<int>> x = new Dictionary<string, List<int>>();
var query = someSource
.Where(x => x.Name.StartsWith("A"))
.GroupBy(x => x.State)
.OrderBy(x => x.Date);
これquery
はタイプIOrderedEnumerable<IGrouping<string, SomeType>>
です。誰も気にしない?
タイプ名が右側に表示されず、単純な場合は、使用するものが単純化されないため、明示的に記述することをお勧めしますvar
。
int y = 7;
string s = "hello";
そして当然のことながら、匿名型を作成するvar
場合は、型名がないため、使用する必要があります。
var z = new { Name = "Coordinate", X = 5.343, Y = 76.04 };
このvar
キーワードは、使用を簡素化し、SQLでの作業方法をシミュレートするためにその場で型を作成できるようにするために、LINQとともに導入されました。
SELECT Name, Date FROM Person
var result = DB.Persons.Select(p => new { p.Name, p.Date });