什么时候使用var?

原帖地址:http://www.infoq.com/news/2008/05/CSharp-var

中文译版:http://developer.51cto.com/art/200806/75499.htm

文章虽然是去年的,但是对于新手学习还是很有帮助的,不妨一看。

C# 3新增了关键字“var”。在编译器能明确判断变量的类型时,它允许对本地类型进行推断。然而,对于何时应该使用它却存在某些争论。 
开发IDE工具的公司ReSharper(我个人现在非常喜欢这个工具,对新手编码太有用了)的Ilya Ryzhenkov总结了使用var的一些好处 :

1. 它有利于更好地为本地变量命名。(better naming for local variables

2. 它有利于设计更好的API。(better API.

3. 它促使对变量进行初始化。(variable initialization.

4. 它消除了代码的混乱。(removes code noise

5. 它不需要using指示符。(doesn't require the using directive.

下面的资料来源于MSDN,关于var的定义以及用途:

var 关键字指示编译器根据初始化语句右侧的表达式推断变量的类型。推断类型可以是内置类型、匿名类型、用户定义类型、.NET Framework 类库中定义的类型或任何表达式。

在很多情况下,var 是可选的,它只是提供了语法上的便利。但在使用匿名类型初始化变量时,需要使用它。这在 LINQ 查询表达式中很常见。

使用限制:

1.       不能将该变量初始化为 null

2.       不能将 var 用于类范围的域。

什么时候使用var

在查询表达式中,当难以确定查询变量的确切构造类型时,您会发现 var 也很有用。这种情况可能发生在分组和排序操作中。当在键盘上键入变量的具体类型单调乏味时,或者当该类型显而易见或对提高代码可读性没有作用时,var 关键字也可能有用。不过,使用 var 确实可能使其他开发人员更加难以理解您的代码。

在Resharper中,显示声明局部变量会得到一个使用隐式类型的局部变量警告。在大多数情况下,使用var能使你的代码十分简洁,也使开发人员的效率得到提高。但是使用var的争论仍然存在。比如很多人会认为var会降低代码可读性。

我个人十分喜欢使用var。不过,虽然var是类型安全但是当我们使用var的时候我们需要知道我们的目的是什么?

看下面一个例子:

var amount=10;

amount的类型是什么int16?int32?int64?

 再来看另一个例子:

var tax = taxCalculator.GetTax(amount); 

tax又是什么类型?

所以在这些会引起混淆的情况下最好不要使用var。

posted @ 2009-07-27 12:02  wispzone  阅读(1075)  评论(5编辑  收藏  举报