【问题标题】:Question on the scope of using the keyword "Var"关于使用关键字“Var”的范围的问题
【发布时间】:2010-11-09 20:37:11
【问题描述】:

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

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

也许对于其他每个人来说都是如此明显,以至于大多数作家都没有提到这一点,而我是地球上最后一个不明显的读者 - 有人会这么好心地解释这背后的原因吗?

不允许的示例

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

允许的示例

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

我显然可以声明

public class SomeClass
{
  public string SomeVariable;
}

【问题讨论】:

标签: c# keyword


【解决方案1】:

基本上,您可以使用var 进行本地声明,但不能使用字段。

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

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

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

【讨论】:

  • 感谢您提供详细信息。我提到的两本书是; Pro C# 4 和 .Net 4 以及“Head First C#”。为了清楚起见,他们在几个地方详细说明了匿名类型 var 关键字的使用及其使用。但我没有读过为什么它的使用被限制在类本身的范围之外。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
  • 1970-01-01
  • 2011-08-17
  • 2013-01-29
  • 1970-01-01
  • 2011-09-12
  • 1970-01-01
相关资源
最近更新 更多