CLR via C# 隐式类型的局部变量
C#能根据初始化表达式的类型推断方法中的局部变量的类型。
var name = "bob";为了确定name变量的类型,编译器要检查赋值操作符(=)右侧的表达式的类型。由于“bob”是字符串,所以编译器推断name的类型时string。
这是由于null能隐式转型为任何引用类型或可空值类型。因此编译器不能推断它的确切类型。
var collection = new Dictionary<string, int>() { { "age", 18 } };这个反映了C#“隐式类型的局部变量”功能的真正价值。没有这个功能,就不得不在赋值操作符左右两侧指定Dictionary<string, int>。这不仅需要打更多的字,而且以后修改了集合类型或者任何泛型参数类型,赋值操作符两侧的代码也要修改。
在foreach循环中,我们用var让编译器自动推断集合中的元素的类型。这证明了var能很好地用于 foreach,using和for语句。还可以在试验代码时利用它。例如,可以用方法的返回值初始化隐式类型的局部变量。开发方法时可以灵活更改返回类型。
//--
不能用var声明方法的参数类型。
不能用var声明类型中的字段。