什么时候使用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。