关于使用关键字“Var”的范围的问题

时间:2010-11-09 20:37:11

标签: c# keyword

C#的新手我已经对学习语言做了很多阅读,在2本完整的书籍和大量的网站文章中,我是否记得读过关于类范围内不允许的关键字“var”用法,但需要在类的某个嵌套元素内(即方法)。我知道你可以使用访问修饰符和类型声明变量(即string,int..etc。)。

即使是这个网站,我也可以找到关于使用“var”的问题,但不是关于它的限制。

对于其他所有人来说,大多数作家都没有提到这一点,而且我是世界上最后一位读者并不明白 - 或许有人会如此善意地解释其背后的原因吗?

不允许举例

public class SomeClass
{
    var SomeVariable = new SomeClass();
}

允许的例子

public class SomeClass
{
   public void SomeMethod()
   {
      var SomeVariable = new SomeClass();
   }
}

我显然可以宣布

public class SomeClass
{
  public string SomeVariable;
}

1 个答案:

答案 0 :(得分:4)

基本上,你可以使用var作为本地声明,但不能使用字段。

Eric Lippert's blog post解释了原因。基本上:

  • 介绍了一些含糊不清的尴尬局面
  • 这意味着设法将匿名类型作为类的公共接口的一部分公开,可能
  • 它与编译器的实现方式不兼容(这可能听起来像团队只是懒惰,但他们需要像其他人一样优先处理工作)。

(我当然希望你的C#书籍都不是C#深度,'我在那里肯定提到它......两个版本中的8.2.2节:)