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