可能重复:
ReSharper 和 var
安装 ReSharper 后,它要求(通过警告)我尽可能使用 var,例如
UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t;
ReSharper 想把它变成
var ue = (UnhandledExceptionEventArgs) t;
我更喜欢第一个版本,有什么理由更喜欢var吗?更好的性能?任何事物?或者它只是一种代码风格?
可能重复:
ReSharper 和 var
安装 ReSharper 后,它要求(通过警告)我尽可能使用 var,例如
UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t;
ReSharper 想把它变成
var ue = (UnhandledExceptionEventArgs) t;
我更喜欢第一个版本,有什么理由更喜欢var吗?更好的性能?任何事物?或者它只是一种代码风格?
当您说“通过警告”时,您到底是什么意思?我通常看到它暗示您可能想要使用 var,但没有像警告那样苛刻。
var 没有性能差异 - 代码被编译为相同的 IL。潜在的好处在于可读性——如果你已经在赋值的 RHS 上明确了变量的类型(例如通过强制转换或构造函数调用),那么在 LHS 上也有它的好处是什么?不过这是个人喜好。
如果您不希望 R# 建议使用 var,只需更改选项即可。关于 ReSharper 的一件事:它非常可配置 :)
正如其他人所说,当您使用以下任何一种时,编译代码(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));
在这种情况下,它只是编码风格。
var
仅在处理匿名类型时才需要使用。
在其他情况下,这是一个品味问题。