IAd*_*ter 149 .net c# resharper coding-style var
可能重复:
ReSharper和var
在我安装了ReSharper后,它要求(通过警告)我尽可能使用var,例如
UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t;
Run Code Online (Sandbox Code Playgroud)
ReSharper想把它变成
var ue = (UnhandledExceptionEventArgs) t;
Run Code Online (Sandbox Code Playgroud)
我更喜欢第一个版本,有没有理由更喜欢var?更好的性能?什么?或者它只是一种代码风格?
Mar*_*erl 104
这真的只是一种编码风格.编译器为两个变体生成完全相同的内容.
有关性能问题,另请参见此处:
Jon*_*eet 35
当你说"通过警告"时,你究竟是什么意思?我经常看到它提示你可能想要使用var,但没有像警告一样严厉.
与var没有性能差异 - 代码被编译为相同的IL.潜在的好处在于可读性 - 如果你已经在赋值的RHS中明确了变量晶体的类型(例如通过强制转换或构造函数调用),那么在LHS中获得它的好处是什么?这是个人偏好.
如果您不希望R#建议使用var,只需更改选项即可.关于ReSharper的一件事:它是非常可配置的:)
Ale*_*fie 15
正如其他人所说,当您使用以下任一项时,编译代码(IL)没有区别:
var x1 = new object();
object x2 = new object;
Run Code Online (Sandbox Code Playgroud)
我想Resharper警告你,因为[在我看来]比第二个例子更容易阅读第一个例子.此外,需要两次重复该类型的名称是什么?
考虑以下情况,你会得到我的意思:
KeyValuePair<string, KeyValuePair<string, int>> y1 = new KeyValuePair<string, KeyValuePair<string, int>>("key", new KeyValuePair<string, int>("subkey", 5));
Run Code Online (Sandbox Code Playgroud)
这样更容易阅读:
var y2 = new KeyValuePair<string, KeyValuePair<string, int>>("key", new KeyValuePair<string, int>("subkey", 5));
Run Code Online (Sandbox Code Playgroud)
Hen*_*man 14
在这种情况下,它只是编码风格.
var
只有在处理匿名类型时才需要使用.
在其他情况下,这是一个品味问题.
归档时间: |
|
查看次数: |
115558 次 |
最近记录: |