2016-12-06 49 views
0

今天我试图声明一个静态变量EmployeeMaxAge的静态成员如下面的代码:为什么const成员语法的行为就像一个类

namespace NewApplication 
{ 
    public class CommonConstants 
    { 
     public const int EmployeeMaxHeightInCm = 160; 
     public static int EmployeeMaxAge = 50; //new static member 
    } 
} 

当我试着在我的主要方法,使用它作为CommonConstants.EmployeeMaxAge我可能会突然发现intellisense也在智能感知下拉列表中显示EmployeeMaxHeightInCm(它没有静态修饰符)。所以我在代码中编写了CommonConstants.EmployeeMaxHeightInCm,并且看到它正在编译并成功运行。我一直知道ClassName.MemberName语法只适用于类的静态成员,但同样的语法也适用于const成员。有人能帮我理解C#语言的这种行为吗?

+2

该语法对'const'成员也是有效的。你为什么不这样想?你有一个源代码说类型标识符只有静态成员可用吗? –

+2

还要注意,你已经放置了'// new constant'的成员声明实际上并不是一个常量,而是一个具有初始化器的静态可变字段。请确保我们在这里讨论相同的事情。 –

+0

@ LasseV.Karlsen。真正。我修改了我的问题。我没有添加一个const,而是一个公共静态成员。 – RBT

回答

2

答案是:因为这就是C#标准定义常量字段的方式。

从部分10.4常量

即使常数被认为是静态成员,一个常数声明既不要求也不允许静态改性剂。

...

恒定的值在表达式中使用简单名称(第7.6.2节)或成员访问(§7.6.4)获得。

相关问题