首页 文章

我为什么要使用var而不是类型? [重复]

提问于
浏览
139

可能重复:ReSharper和var

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

UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t;

ReSharper想把它变成

var ue = (UnhandledExceptionEventArgs) t;

我更喜欢第一个版本,有没有理由更喜欢 var ?更好的性能?什么?或者它只是一种代码风格?

4 回答

  • 97

    这真的只是一种编码风格 . 编译器为两个变体生成完全相同的内容 .

    有关性能问题,另请参见此处:

  • 13

    当你说"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非常可配置:)

  • 33

    在这种情况下,它只是编码风格 .

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

  • 13

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

相关问题