为什么我应该在可能的时候使用隐式类型(var)?

时间:2012-09-25 06:59:32

标签: c# implicit-typing

  

可能重复:
  Advantage of var keyword in C# 3.0

昨天我偶然发现MS的推荐,我应该尽可能使用var:

http://msdn.microsoft.com/en-us/library/ff926074.aspx

我一直认为使用正确的Type会有助于记录代码,并有助于在编译时找到错误。

这个推荐背后的原因是什么?

最佳

托马斯

5 个答案:

答案 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的另一个原因是你可以在右侧看到它是什么类型的。

使用它的最后一个原因是匿名类型(每当你不知道类型时)。