.net 在方法外部使用var

8ehkhllq  于 2023-02-06  发布在  .NET
关注(0)|答案(3)|浏览(151)

我想使用var关键字在类中声明一个字段,但是var似乎只能在方法内部工作。
我的代码看起来像:

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

我想拥有

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

为什么这不可能?

0s7z1bwu

0s7z1bwu1#

我的文章主题:
Why no var on fields?
总结如下:
1.如果我们有"var"字段,那么字段的类型在表达式被分析之前是无法确定的,而这是在我们已经需要知道字段的类型之后发生的。
1.如果这些引用中有长链甚至循环,那该怎么办?所有这些算法都必须在这样一个世界中重新编写和测试,在这个世界中,顶级类型信息是它们中确定的,而不是它们消耗的。
1.如果你有"var"字段,那么初始化器可以是匿名类型的。假设字段是公共的。在CLR或CLS中还没有任何标准来说明公开匿名类型字段的正确方法。

y3bcpkx1

y3bcpkx12#

C# reference

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

也来自The C# Programming Reference

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

它只是不适合你所想的用法。
它的主要目的是允许在代码中支持匿名类型,并允许以简洁的方式指定局部变量。

r3i60tvu

r3i60tvu3#

简单的回答是因为说明书上说这是不合法的。-)
一般来说,这不是你想要做的。成员的类型应该是IDictionary<string, string>而不是Dictionary<string, string>。这是一个很小的nit,但一般来说,最好在外部可见的对象中使用一个接口,这样你就可以在以后更改类型而不会影响代码的客户端。编译器只是给你一点提示,引导你朝着这个方向前进。

相关问题