2011-02-01 102 views
114

可能重复:
ReSharper and var为什么我应该使用var而不是类型?

我已经安装了ReSharper的,它要求(通过警告)之后,我使用VAR只要有可能,例如

UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t; 

ReSharper的希望把它变成

var ue = (UnhandledExceptionEventArgs) t; 

我喜欢第一个版本更好,有什么理由更喜欢var?更好的性能?什么?或者它只是一种代码风格?

+0

其他重复http://stackoverflow.com/questions/296783/resharper-vars http:// stackoverflow。com/questions/1010480/why-does-resharper-default-to-warning-if-you-dont-declare-using-var http://stackoverflow.com/questions/1873873/why-does-resharper-want-to -use-var-for-everything http://stackoverflow.com/questions/1299045/is-resharper-correct – 2011-02-01 22:10:15

+0

-1:这已被覆盖* so *以前多次,重复很容易通过搜索网站找到。 – 2011-02-01 22:12:47

+4

@Greg Beech我不同意,不是每个人都知道它是一个ReSharper的bug,我认为这意味着什么,但我错了。 – IAdapter 2011-02-01 22:14:38

回答

29

当你说 “的警告,” 你到底是什么意思?我通常看到它给你一个提示,你可能可能想要使用var,但没有像警告那样苛刻。

与var没有性能差异 - 代码被编译为相同的IL。潜在的好处在于可读性 - 如果您已经在作业的RHS(例如,通过演员或构造函数调用)上使变量类型清晰可见,那么LHS上的好处还有哪些?不过这是个人喜好。

如果您不希望R#建议使用var,只需更改选项即可。一件事ReSharper的:这是非常配置:)

10

这种情况下它只是编码风格。

只有在处理匿名类型时才需要使用var
在其他情况下,这是一个品味问题。

10

正如其他人所说,有在编译的代码(IL)没有差异,当您使用以下两种:

var x1 = new object(); 
object x2 = new object; 

我想ReSharper的警告你,因为它是[在我看来]更容易读第一个例子比第二个例子。此外,需要重复两次该类型的名称?

考虑下面,你会明白我的意思:

KeyValuePair<string, KeyValuePair<string, int>> y1 = new KeyValuePair<string, KeyValuePair<string, int>>("key", new KeyValuePair<string, int>("subkey", 5)); 

这是比较容易的方式,而不是阅读:

var y2 = new KeyValuePair<string, KeyValuePair<string, int>>("key", new KeyValuePair<string, int>("subkey", 5)); 
相关问题