可能重复:
C# 3.0 中 var 关键字的优势
昨天我偶然发现了 MS 的建议,我应该尽可能使用 var:
http://msdn.microsoft.com/en-us/library/ff926074.aspx
我一直认为使用正确的类型将有助于记录代码,也有助于在编译时发现错误。
这个推荐背后的原因是什么?
最佳托马斯
可能重复:
C# 3.0 中 var 关键字的优势
昨天我偶然发现了 MS 的建议,我应该尽可能使用 var:
http://msdn.microsoft.com/en-us/library/ff926074.aspx
我一直认为使用正确的类型将有助于记录代码,也有助于在编译时发现错误。
这个推荐背后的原因是什么?
最佳托马斯
那么建议有:
当变量的类型从赋值的右侧显而易见时,或者当精确类型不重要时,对局部变量使用隐式类型。
它并不总是。
它还具有:
当类型在赋值右侧不明显时,不要使用 var。
来自同一来源的示例:
// When the type of a variable is not clear from the context, use an
// explicit type.
int var4 = ExampleClass.ResultSoFar();
它是一种减少击键的语法糖。
编译器通过计算 RHS 上的表达式来导出 LHS 上的变量类型。
所以如下代码:
var fStream = new FileStream("file", Filemode.Open);
由编译器转换为:
Filestream fstream = new FileStream("file", Filemode.Open);
编译器对我们的一些输入非常友好。
使用隐式类型并不意味着变量不是强类型的。这意味着编译器暗示了语句右侧的类型。
var i = 1;
i
is 定义为具有 type int
。这和说的完全一样,int i = 1;
但类型是隐含的。
同样,下面的代码更容易阅读:
var pairs = new List<pair<int, IEnumerable<string>>>();
比你必须输入:
List<pair<int, IEnumerable<string>>> pairs = new List<pair<int, IEnumerable<string>>>();
然而结果却完全一样。
我的经验法则:
var
如果代码是通用的,则应使用;即,如果将来类型发生变化,它是否可以正常工作。
使用 var 不会损害您的性能,因为编译器会完成所有工作。它比打字更短MyDatabaseModel model
。
使用 var 的另一个原因是您可以在右侧看到它是哪种类型。
使用它的最后一个原因是匿名类型(只要您不知道类型)。