昨天我偶然发现MS的推荐,我应该尽可能使用var:
http://msdn.microsoft.com/en-us/library/ff926074.aspx
我一直认为使用正确的Type会有助于记录代码,并有助于在编译时找到错误。
这个推荐背后的原因是什么?
最佳托马斯
答案 0 :(得分:7)
好的建议有:
Coding Convention - Implicitly Typed Local Variables
当变量的类型时,对局部变量使用隐式类型 是明显从作业的右侧,还是精确的 类型不重要。
并非总是如此。
它还有:
当右侧的类型不明显时,请勿使用var 任务。
来自同一来源的示例:
// When the type of a variable is not clear from the context, use an
// explicit type.
int var4 = ExampleClass.ResultSoFar();
答案 1 :(得分:4)
这是一种语法糖,可以减少击键次数。
编译器通过评估RHS上的表达式来导出LHS上的变量类型。
如下代码:
var fStream = new FileStream("file", Filemode.Open);
由编译器转换为:
Filestream fstream = new FileStream("file", Filemode.Open);
编译器非常善于打字。
答案 2 :(得分:2)
我的经验法则:
如果代码是通用的,您应该使用var
;即如果将来类型改变它可能会正常工作。
答案 3 :(得分:1)
使用隐式类型并不意味着变量不是强类型的。这意味着编译器隐含了语句右侧的类型。
var i = 1;
i
定义为类型int
。它与说int i = 1;
完全相同,但暗示了类型。
同样,以下代码更容易阅读:
var pairs = new List<pair<int, IEnumerable<string>>>();
比你必须输入:
List<pair<int, IEnumerable<string>>> pairs = new List<pair<int, IEnumerable<string>>>();
然而结果却完全一样。
答案 4 :(得分:0)
使用var不会损害您的性能,因为编译器可以完成所有工作。
它比输入MyDatabaseModel model
短。
使用var的另一个原因是你可以在右侧看到它是什么类型的。
使用它的最后一个原因是匿名类型(每当你不知道类型时)。