var (C# リファレンス)
Visual C# 3.0 以降では、メソッドのスコープで宣言される変数が、var という暗黙の型を持つことができます。 暗黙的に型指定されたローカル変数は、型を宣言した場合と同様に厳密に型指定されますが、コンパイラが型を決定します。 次に示す 2 つの i の宣言は、機能的に同じです。
var i = 10; // implicitly typed
int i = 10; //explicitly typed
詳細については、「暗黙的に型指定されるローカル変数 (C# プログラミング ガイド)」および「LINQ クエリ操作での型の関係 (C#)」を参照してください。
使用例
次の例では、2 つのクエリ式を示します。 最初の式では、クエリ結果の型が IEnumerable<string> として明示的に宣言できるため、var は使用できますが、使用する必要はありません。 しかし、2 番目の例では、結果が匿名型のコレクションで、型名にアクセスできるのがコンパイラだけであるため、var を使用する必要があります。 例 2 では、foreach の反復変数である item も、暗黙的に型指定する必要があります。
// Example #1: var is optional because
// the select clause specifies a string
string[] words = { "apple", "strawberry", "grape", "peach", "banana" };
var wordQuery = from word in words
where word[0] == 'g'
select word;
// Because each element in the sequence is a string,
// not an anonymous type, var is optional here also.
foreach (string s in wordQuery)
{
Console.WriteLine(s);
}
// Example #2: var is required because
// the select clause specifies an anonymous type
var custQuery = from cust in customers
where cust.City == "Phoenix"
select new { cust.Name, cust.Phone };
// var must be used because each item
// in the sequence is an anonymous type
foreach (var item in custQuery)
{
Console.WriteLine("Name={0}, Phone={1}", item.Name, item.Phone);
}
参照
関連項目
暗黙的に型指定されるローカル変数 (C# プログラミング ガイド)