为什么要使用 var 而不是类型?

可能的复制品:
ReSharper 和 var

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

UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t;

ReSharper 想把它变成

var ue = (UnhandledExceptionEventArgs) t;

我更喜欢第一个版本,有什么理由更喜欢 Var吗?更好的表现?有发现吗?还是只是一种代码风格?

149755 次浏览

它实际上只是一种编码风格,编译器为两种变体生成完全相同的代码。

关于性能问题,请点击这里:

你说的“警告”到底是什么意思?我经常看到它提示 要使用 var,但是没有比警告更严厉的了。

与 var 没有性能差异-代码被编译成相同的 IL。潜在的好处在于可读性——如果你已经把变量的类型清楚地写在任务的 RHS 上(例如通过强制转换或构造函数调用) ,那么在 LHS 上也写变量的好处在哪里呢?不过这是个人偏好。

如果不希望 R # 建议使用 var,只需更改选项。ReSharper 有一个特点: 它是 非常可配置的:)

这个案子中,它只是编码风格。

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

正如其他人所说,当您使用以下任何一种方法时,编译代码(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));