var 是C#3.0新出的一个定义变量的类型,它
可代替任何类型,
编译器会根据上下文来判断其具体类型。
使用var定义变量时有以下3个要求:
1. 必须在定义时初始化。也就是必须是var s = “test”形式,而不能是如下形式:
var s;
s = “test”;
2. 一但初始化完成,就不能再给var变量赋与初始化值类型不同的值;
3. var必须是方法内部的局部变量;
使用var定义变量时有以下3个要求:
1. 必须在定义时初始化。也就是必须是var s = “test”形式,而不能是如下形式:
var s;
s = “test”;
2. 一但初始化完成,就不能再给var变量赋与初始化值类型不同的值;
3. var必须是方法内部的局部变量;
下面引用msdn中var的实例
下面的示例演示了两个查询表达式。 在第一个表达式中,允许但不需要使用 var,因为可以将查询结果的类型显式声明为 IEnumerable<string>。 但是,在第二个表达式中必须使用 var,因为结果是一个匿名类型集合,而该类型的名称只有编译器本身可以访问。 请注意,在第二个示例中,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);
}