为什么我应该使用var而不是一个types?

可能重复:
ReSharper和var

在我安装了ReSharper后,它要求(通过警告),例如,我尽可能使用var

UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t; 

ReSharper想把它变成

 var ue = (UnhandledExceptionEventArgs) t; 

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

这实际上只是一种编码风格。 编译器为两个变体生成完全相同的结果。

性能问题请参阅这里:

  • 将使用'var'影响性能?

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

与var没有性能差异 – 代码被编译到相同的IL。 潜在的好处是可读性 – 如果你已经在作业的RHS(例如,通过一个强制转换或者构造函数调用)上使variables的types清晰可见,那么LHS的好处在哪里呢? 尽pipe如此,这是个人喜好。

如果你不希望R#build议使用var,只需要改变选项。 有关ReSharper的一件事:它是非常可configuration的:)

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

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

正如其他人所说的那样,在使用以下任何一种情况下,编译代码(IL)没有区别:

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

我想Resharper警告你,因为(在我看来)比第二个例子更容易阅读第一个例子。 另外,需要重复两次这个types的名字?

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

 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));