5

可能重复:
C# 3.0 中 var 关键字的优势

昨天我偶然发现了 MS 的建议,我应该尽可能使用 var:

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

我一直认为使用正确的类型将有助于记录代码,也有助于在编译时发现错误。

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

最佳托马斯

4

5 回答 5

10

那么建议有:

编码约定 - 隐式类型的局部变量

当变量的类型从赋值的右侧显而易见时,或者当精确类型不重要时,对局部变量使用隐式类型。

它并不总是。

它还具有:

当类型在赋值右侧不明显时,不要使用 var。

来自同一来源的示例:

// When the type of a variable is not clear from the context, use an 
// explicit type. 
int var4 = ExampleClass.ResultSoFar();
于 2012-09-25T07:01:13.790 回答
4

它是一种减少击键的语法糖。

编译器通过计算 RHS 上的表达式来导出 LHS 上的变量类型。

所以如下代码:

var fStream = new FileStream("file", Filemode.Open);

由编译器转换为:

Filestream fstream = new FileStream("file", Filemode.Open);

编译器对我们的一些输入非常友好。

于 2012-09-25T07:02:05.050 回答
4

使用隐式类型并不意味着变量不是强类型的。这意味着编译器暗示了语句右侧的类型。

var i = 1;

iis 定义为具有 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>>>();

然而结果却完全一样。

于 2012-09-25T07:10:00.813 回答
2

我的经验法则:

var 如果代码是通用的,则应使用;即,如果将来类型发生变化,它是否可以正常工作。

于 2012-09-25T07:04:52.507 回答
0

使用 var 不会损害您的性能,因为编译器会完成所有工作。它比打字更短MyDatabaseModel model

使用 var 的另一个原因是您可以在右侧看到它是哪种类型。

使用它的最后一个原因是匿名类型(只要您不知道类型)。

于 2012-09-25T07:02:49.843 回答