可能重复:ReSharper和var
在我安装了ReSharper后,它要求(通过警告)我尽可能使用var,例如
UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t;
ReSharper想把它变成
var ue = (UnhandledExceptionEventArgs) t;
我更喜欢第一个版本,有没有理由更喜欢 var ?更好的性能?什么?或者它只是一种代码风格?
这真的只是一种编码风格 . 编译器为两个变体生成完全相同的内容 .
有关性能问题,另请参见此处:
当你说"by warnings"究竟是什么意思?我经常看到它提示你可能想要使用var,但没有像警告一样严厉 .
与var没有性能差异 - 代码被编译为相同的IL . 潜在的好处在于可读性 - 如果你已经在赋值的RHS中明确了变量晶体的类型(例如通过强制转换或构造函数调用),那么在LHS上获得它的好处是什么?这是个人偏好 .
如果你没有't want R# suggesting the use of var, just change the options. One thing about ReSharper: it' s非常可配置:)
在这种情况下,它只是编码风格 .
只有在处理匿名类型时才需要使用 var .在其他情况下,这是一个品味问题 .
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));
4 回答
这真的只是一种编码风格 . 编译器为两个变体生成完全相同的内容 .
有关性能问题,另请参见此处:
当你说"by warnings"究竟是什么意思?我经常看到它提示你可能想要使用var,但没有像警告一样严厉 .
与var没有性能差异 - 代码被编译为相同的IL . 潜在的好处在于可读性 - 如果你已经在赋值的RHS中明确了变量晶体的类型(例如通过强制转换或构造函数调用),那么在LHS上获得它的好处是什么?这是个人偏好 .
如果你没有't want R# suggesting the use of var, just change the options. One thing about ReSharper: it' s非常可配置:)
在这种情况下,它只是编码风格 .
只有在处理匿名类型时才需要使用
var
.在其他情况下,这是一个品味问题 .
正如其他人所说,当您使用以下任一项时,编译代码(IL)没有区别:
我想Resharper警告你,因为[在我看来]比第二个例子更容易阅读第一个例子 . 此外,需要两次重复该类型的名称是什么?
考虑以下情况,你会得到我的意思:
这样更容易阅读: