19

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

我的代码如下所示:

public static Dictionary<string, string> CommandList = new Dictionary<string, string>{};

我想拥有:

public static var CommandList = new Dictionary<string, string>

这怎么不可能?

4

3 回答 3

31

我关于这个主题的文章:

为什么字段上没有 var?

总结一下:

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

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

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

于 2009-12-18T17:07:28.140 回答
6

来自C# 参考

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

也来自The C# Programming Reference

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

它只是不适合您的用途。

它的主要目的是允许在您的代码中支持匿名类型,并具有额外的优势,即允许以简洁的方式指定局部变量。

于 2009-12-18T17:09:18.983 回答
0

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

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

于 2009-12-18T17:03:48.553 回答