我刚刚开始在Visual Studio中使用ReSharper(在SO上的许多建议之后)。为了尝试一下,我打开了一个最近的ASP。NET MVC项目。我注意到它建议的第一件也是最频繁的事情之一是将我的大部分/所有显式声明改为var。例如:

//From This:
MyObject foo = DB.MyObjects.SingleOrDefault(w => w.Id == 1);
//To This:
var foo = DB.MyObjects.SingleOrDefault(w => w.Id == 1);

等等,即使是简单的类型,如int, bool等。

为什么推荐这个?我没有计算机科学或。net背景,最近“陷入”了。net开发,所以我真的很想了解正在发生什么,以及它是否有益。


当前回答

对于那些不喜欢经常使用“var”的人,你也可以在执行“引入变量”时停止ReSharper默认使用var。这让我很长一段时间都很沮丧,它总是默认为var,而我每次都在改变它。

这些设置在代码编辑> c# >代码样式下

其他回答

var关键字是在c# 3.0中引入的——它允许我们忘记显式地指定类型。

你是否使用并没有真正的区别

MyObject foo = DB.MyObjects。SingleOrDefault(w => w. id == 1);

or

var foo = DB.MyObjects。SingleOrDefault(w => w. id == 1);

除了纯粹的可读性和更少的出错机会。

这看起来像是一个clichéd的例子,但下面的内容可能会帮助你理解:

var myInt = 23;

返回int类型,而

var myInt = "23";

返回一个字符串类型。

MSDN参考

根据JetBrains (ReSharper的作者)的说法,他们鼓励在默认情况下使用var。

来自他们的网站:

使用c# 3.0引入的隐式类型局部变量(也称为var关键字)已经变得非常流行,因为它在许多场景中提高了可读性。默认情况下,ReSharper也鼓励使用var关键字,但它的使用首选项是灵活配置的-例如,你可以选择在特定情况下或任何地方使用显式类型,ReSharper将帮助你强制你的首选项。

没有技术上的区别(正如eWolf所指出的)。你可以使用其中一种,生成的CLR代码看起来是一样的。

在我看来,主要的好处是,这往往迫使您使用更好的变量命名。在你的例子中,'foo'是一个非常糟糕的变量名。

我看到了许多正确答案,但没有完整的答案。

ReSharper确实在默认情况下过度使用var。我想大多数人都会同意这一点。当使用var并且类型很明显时(例如使用new语句时),它也更容易阅读。我看到一篇文章展示了如何更新检查的严重性,只显示使用var的提示。

我曾尝试在其他帖子上评论,添加在哪里设置这些,但没有这样的声誉。显然,我也没有名声发布我的设置截图。

我会解释怎么去那里。

在Visual Studio >主菜单> Resharper > Options > Code Editing > c# > Code Style > Var using In declarations

对于内置类型使用显式类型 对于简单类型,在明显时使用'var' 在其他地方使用'var '

ReSharper帮助文档:代码语法风格:隐式/显式类型('var'关键字) -配置使用'var'关键字的首选项

在ReSharper(8.02,但可能是其他版本)中,“使用隐式类型的局部变量声明”建议的选项可以根据您的偏好进行调整,不管它是什么,首先打开ReSharper的选项菜单:

然后,在“代码检查”下,通过调整所选语言的“检查严重性”,在我的例子中是c#:

正如你所看到的,有选项可以调整ReSharper提出的所有建议。希望这能帮助像我这样已经有“var”使用策略的人,只是想ReSharper尊重它:)