在方法之外使用var

我想使用var关键字在我的类中声明一个字段,但var似乎只在方法内部工作。

我的代码看起来像:

 public static Dictionary CommandList = new Dictionary{}; 

我想要:

 public static var CommandList = new Dictionary 

怎么这不可能?

我关于这个主题的文章:

为什么字段上没有var?

总结一下:

  1. 如果我们有“var”字段,那么在分析表达式之前无法确定字段的类型,并且在我们已经需要知道字段的类型之后发生这种情况。

  2. 如果这些参考文献中有长链,甚至是循环,该怎么办? 所有这些算法都必须在一个世界中进行重写和测试,在这个世界中, 它们确定顶级类型信息而不是被它们消耗。

  3. 如果您有“var”字段,则初始化程序可以是匿名类型。 假设该字段是公开的。 CLR或CLS中还没有关于公开匿名类型字段的正确方法的标准。

来自C#参考

  • 从Visual C#3.0开始, 在方法范围声明的变量可以具有隐式类型var。

也来自C#编程参考

  • var只能在同一语句中声明和初始化局部变量时使用; 该变量不能初始化为null,也不能初始化为方法组或匿名函数。
  • var不能在类范围的字段上使用。

它只是不打算用于您的用途。

它的主要目的是允许在代码中支持匿名类型,并具有允许一种指定局部变量的简洁方法的附加优势。

简短的回答是因为规范说它不合法。 😉

一般来说,这不是你想要做的。 成员的类型应该是IDictionary而不是Dictionary 。 这是一个小问题但通常最好在外部可见对象中使用接口,这样您可以在以后更改类型而不会影响代码的客户端。 编译器只是给你一点点推动指导你的方向。