关于样式:C#var关键字用法

C# var keyword usage

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicates:
What to use: var or object name type?
Use of var keyword in C#
What’s the point of the var keyword?
Should I always favour implictly typed local variables in C# 3.0?

我刚刚安装了一个Resharper的试用版来为我的公司评估它。我注意到的一件事是建议我更改以下内容(虚构的示例):

1
string s ="";

1
var s ="";

声明变量时使用var关键字而不是使用对象类型是最佳实践吗?它有什么好处呢?对于上下文,我以前是Java开发人员,刚刚转入.NET Works.


我认为使用var可以使代码更容易阅读,这对我来说意味着var正在替换的类型必须是完全明显的。

例如,这将是var的一个很好的用法(人为示例):

1
var thing = new Dictionary<int, KeyValuePair<string, int>>();

然而,这将是对var的一个错误使用:

1
var thing = GetThingFromDatabase();

我发现它在某些类型声明很长的情况下很有用,例如:

1
Dictionary<int, string> item = new Dictionary<int, string>();

变成

1
var item = new Dictionary<int, string>();


这意味着同样的事情,因为使用var关键字,变量是隐式类型的,编译器在构建时推断类型。我更喜欢指定类型,而不是在大多数情况下使用var,因此我更改了resharper设置。


我记得,雷斯哈珀只是说可以这样写。它没有说你应该。

很多建议都是我第一次看到的建议。就是其中之一。

另一个原因是它说写"this.someproperty"是多余的,而我认为通过这样做代码更容易阅读。


Resharper还建议将if语句转换为true或not true。几乎是一样的,但这取决于您的编码风格。所以,当您发现使用var更舒适时-使用这个建议。