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