CLR via C#学习笔记-第九章-隐式类型的局部变量

9.2 隐式类型的局部变量

C#能根据初始化表达式的类型推断方法中的局部变量的类型。

private static void ImplicitlyTypedLocalVariables()
{
    var name="Jeff";//System.String
    //var n=null//错误,不能将null赋值给隐式类型的局部变量
    var x=(String)null;//可以这样写但意义不大,System.String
    //声明数组
    var numbers=new Int32[]{1,2,3,4};//System.Int32[]
    //复杂类型少打字
    var collection=new Dictionary<String,Single>(){{"Grant",4.0f}};
    //foreach里少打字
    foreach(var item in collection){}
}

主要用处

在复杂类型中不需要在左侧写出全称,如果需要修改类型仅需修改右侧的类型。

在foreach循环中,var让编译器自动推断集合中元素的类型。

还可在试验代码时利用它,用方法的返回值初始化隐式类型的局部变量。

开发方发时可以灵活更改返回类型。编译器能察觉到返回类型的变化并自动更改变量的类型。

注意事项

不能用var声明方法的参数类型。

编译器必须根据在call site传递的实参来推断参数类型,但call site可能一个都没有也可能有好多个。

不能用用var声明类型中的字段。

字段可以被多个方法访问,这个变量的类型应该显示陈述,一旦允许,匿名类型就会泄露到方法的外部。

用var声明局部变量只是一种简化语法,不要混淆dynamic和var。参考第五章5.5节

原文地址:https://www.cnblogs.com/errornull/p/9818841.html