使用var或不使用var

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

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

 var myString = GetAnyString(); var myInstance = GetClass(); 

代替

 string myString = GetAnyString(); MyClass myInstance = GetClass(); 

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

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

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

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

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

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

 var myDict = new Dictionary>>(); 

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

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

但关于var使用的一般准则如下:

当绝对清楚声明变量的类型时使用var

 Dictionary> varOfSomeLongType = new Dictionary>(); 

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

 var linqResult = from element in SomeCollection select new { element.A, element.B } 

使用它有什么优点和/或缺点吗?

优点:减少打字。

(我认为使用var不是很易读)

我个人同意这一点。

var s = foo();时,它的可读性较差var s = foo(); 而不是string s = foo; 。 在其他情况下,它可以更具可读性。

性能如何?

在运行时没有区别。 编译器将其转换为相同的中间代码,就像您明确说明了类型一样。