在方法之外使用var
我想使用var
关键字在我的类中声明一个字段,但var
似乎只在方法内部工作。
我的代码看起来像:
public static Dictionary CommandList = new Dictionary{};
我想要:
public static var CommandList = new Dictionary
怎么这不可能?
我关于这个主题的文章:
为什么字段上没有var?
总结一下:
-
如果我们有“var”字段,那么在分析表达式之前无法确定字段的类型,并且在我们已经需要知道字段的类型之后发生这种情况。
-
如果这些参考文献中有长链,甚至是循环,该怎么办? 所有这些算法都必须在一个世界中进行重写和测试,在这个世界中, 从它们确定顶级类型信息而不是被它们消耗。
-
如果您有“var”字段,则初始化程序可以是匿名类型。 假设该字段是公开的。 CLR或CLS中还没有关于公开匿名类型字段的正确方法的标准。
来自C#参考
- 从Visual C#3.0开始, 在方法范围声明的变量可以具有隐式类型var。
也来自C#编程参考
- var只能在同一语句中声明和初始化局部变量时使用; 该变量不能初始化为null,也不能初始化为方法组或匿名函数。
- var不能在类范围的字段上使用。
它只是不打算用于您的用途。
它的主要目的是允许在代码中支持匿名类型,并具有允许一种指定局部变量的简洁方法的附加优势。
简短的回答是因为规范说它不合法。 😉
一般来说,这不是你想要做的。 成员的类型应该是IDictionary
而不是Dictionary
。 这是一个小问题但通常最好在外部可见对象中使用接口,这样您可以在以后更改类型而不会影响代码的客户端。 编译器只是给你一点点推动指导你的方向。