为什么var不能应用于成员变量

时间:2011-01-21 07:59:26

标签: c# .net

  

可能重复:
  Why class fields cannot be var?
  Implicit typing; why just local variables?
  var in C# - Why can't it be used as a member variable?

var类型不能应用于成员变量。我想知道为什么?

4 个答案:

答案 0 :(得分:3)

Eric Lippert对此有一个detailed blog post

要点:

  • 即使可行,也需要主要的编译器动荡
  • 在某些情况下确定类型可能非常复杂,并最终出现一些奇怪的情况 - 使用匿名类型公开变量会暴露什么?

我喜欢简单的情况,但“简单”的平衡很难以一种“感觉正确”的优雅方式来决定。

答案 1 :(得分:1)

var只能在本地范围内使用。 实际类型必须由编译器推断,并且很难/不可能从这样的结构中确定类型:

class Person
{
    public var Name {get; set;}
}

答案 2 :(得分:0)

简单地说:

// code fragment

int Add(int x, int y) { return x + y; }

var x = Add(int x, int y); // the compiler will know that the result of the call will be of type int


class X
{
    var x; // illegal, the compiler has no idea what's the target type of X
}

答案 3 :(得分:0)

因为它的类型未知。这与编译器的构建顺序有关。

您还可以查看this topic.