使用var或不使用var

Sim*_*der 17 c#

可能重复:
C#'var'与特定类型性能

大家好,
我最近看到的代码使用var了很多.
例如:

var myString = GetAnyString();
var myInstance = GetClass();
Run Code Online (Sandbox Code Playgroud)

代替

string myString = GetAnyString();
MyClass myInstance = GetClass();
Run Code Online (Sandbox Code Playgroud)

除了可读性(我认为使用var不是很易读),使用它有什么优点和/或缺点吗?性能如何?

And*_*zub 21

这是主观的,但我不喜欢使用变量.至于我,他们没有提高可读性.

但一般var使用指南如下:

使用var时,它是绝对清楚的被宣告什么类型的变量:

Dictionary<string, Dictionary<string, string>> varOfSomeLongType = new Dictionary<string, Dictionary<string, string>>();
Run Code Online (Sandbox Code Playgroud)

或者当您声明匿名类型的变量时:

var linqResult = from element in SomeCollection
                 select new { element.A, element.B }
Run Code Online (Sandbox Code Playgroud)

  • 在我看来,LINQ是少数使用var的情况之一. (7认同)

Aur*_*bon 13

var由具有正确类型的编译器替换,因此除了非常小的编译时间开销之外,没有运行时性能命中(veeeeeeeery small).

实际上,从vue的可读性角度来看,我个人如下:

  • 变量实例化: object myVar = new object();

  • 变量传播: var myVar = anotherVar.getComplexObject();

此外,当您进行非常复杂的类型实例化时,您可能会想要使用它们,例如:

var myDict = new Dictionary<string, List<Tuple<string, object>>>();
Run Code Online (Sandbox Code Playgroud)

在这里,它确实提高了可读性.

  • 如果您不知道它的类型,您怎么知道如何使用该变量? (14认同)
  • 实际上,目前正在开发Java项目,我发现自己非常沮丧,var关键字不可用是Java,特别是在变量传播期间,当你不想搜索文档时,为了知道你得到的变量是什么类型以及如何正确地编写它. (2认同)
  • @ Goldorak84我知道这是旧的,但使用`var` + IntelliSense是一种快速查找它的类型的方法.只需使用`var`,然后将鼠标放在变量上,就可以了!它告诉你它是什么类型.使用外部库或编写复杂的Linq查询时非常方便. (2认同)