使用var或不使用var

时间:2010-10-29 09:18:55

标签: c#

  

可能重复:
  C# 'var' vs specific type performance

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

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

而不是

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

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

3 个答案:

答案 0 :(得分:21)

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

var用法的一般准则如下:

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

Dictionary<string, Dictionary<string, string>> varOfSomeLongType = new Dictionary<string, Dictionary<string, string>>();

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

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

答案 1 :(得分:13)

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

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

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

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

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

var myDict = new Dictionary<string, List<Tuple<string, object>>>();

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

答案 2 :(得分:4)

  

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

优点:减少打字。

  

(我认为使用var不太可读)

我部分同意这一点。

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

  

性能如何

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