可能的重复:
在 C# 中使用 var 关键字
在变量声明中使用“var”类型
大家好,
“它需要显式类型转换的 Var 键工作 尽可能避免装箱和拆箱值类型。”
是否建议使用 var 关键字而不是显式数据类型?
可能的重复:
在 C# 中使用 var 关键字
在变量声明中使用“var”类型
大家好,
“它需要显式类型转换的 Var 键工作 尽可能避免装箱和拆箱值类型。”
是否建议使用 var 关键字而不是显式数据类型?
它可以更好地命名局部变量。当您阅读具有显式类型的局部变量声明时,您此时会获得更多信息,并且诸如“IUnitTestElement current”之类的内容是有意义的。但是,稍后使用此局部变量时,您会阅读“当前”,这需要一些时间才能弄清楚其含义。使用“var currentElement”可以在任何地方更容易阅读。
它引入了更好的 API。当您让编译器从方法返回类型或属性类型推断类型时,首先必须有好的类型。当您在初始化表达式中没有显式类型时,您必须为成员提供最佳名称。
它引发变量初始化。在声明中初始化变量通常是一个好习惯,编译器需要初始化器来推断使用“var”关键字声明的局部变量的类型。
它消除了代码噪声。在很多情况下,隐式键入 local 会减少开发人员需要阅读的文本量,或者更确切地说是跳过。如果我们不使用“var”,则从新对象表达式或强制转换表达式声明局部变量需要指定两次类型。使用泛型可能会导致大量冗余代码。另一个例子是 foreach over Dictionary 中的迭代变量。
它不需要使用指令。使用 var,您无需显式引用类型,因为编译器会为您推断类型,因此当您需要临时变量时无需导入命名空间。
缺点是可能不太可读的代码。例如,该行
int myInt = 0;
仍然比大多数人更直接,
var myInt = 0;
但这主要是由于我们多年来一直在研究的语法。
var
不是数据类型,它只是“let-the-compiler-infer-at-compile-time-what-actual-type-to-use”的“语法糖”。
因此,您只需要了解以下类型推断:
var x = 4; //int
var y = 4.0; //double
var z = 4M; //decimal
var w = (string)null; //string