C#'var'关键字与显式定义的变量

这个问题在这里已经有了答案:

  • 在C#86中使用var关键字的答案

  • 那么,将List改为var会有什么样的性能提升

    不,但这不是重构的唯一有效原因。 更重要的是,它消除了冗余,并使代码缩短而不会造成任何损失。

    我总是被教导明确定义一个变量,而不是使用动态变量,这是更优化的。

    你误解了var意思。 这不是动态的,因为它会产生相同的输出。 这只是意味着编译器会自行计算变量的类型。 它显然有能力这样做,因为这是用于测试类型安全性和正确性的相同机制。

    它也消除了完全无用的代码重复。 对于简单的类型,这可能不会太多。 但请考虑:

    SomeNamespace.AndSomeVeryLongTypeName foo = new SomeNamespace.AndSomeVeryLongTypeName();
    

    显然,在这种情况下,加倍名称不仅是不必要的,而且实际上是有害的。


    不。 他们发出完全相同的IL。

    这只是一个风格问题。

    var具有的好处是,可以更轻松地更改函数的返回类型,而无需更改源代码的其他部分。 例如,将返回类型从IEnumerable<T>更改为List<T> 。 但是,它可能会更容易引入错误。


    var关键字实际上并没有声明一个动态类型的变量。 该变量仍然是静态类型的,它只是从上下文中推断出类型。

    当你有一个很长的typename时,它是一个很好的捷径(通用类型名称可以很长)

    链接地址: http://www.djcxy.com/p/53799.html

    上一篇: C# 'var' keyword versus explicitly defined variables

    下一篇: What to use: var or object name type?