【发布时间】:2016-12-06 09:39:23
【问题描述】:
今天我试图声明一个静态变量EmployeeMaxAge,如下代码所示:
namespace NewApplication
{
public class CommonConstants
{
public const int EmployeeMaxHeightInCm = 160;
public static int EmployeeMaxAge = 50; //new static member
}
}
当我尝试在我的主要方法中将它用作 CommonConstants.EmployeeMaxAge 时,我突然发现智能感知也在智能感知下拉列表中显示 EmployeeMaxHeightInCm(它没有静态修饰符)。于是我在代码中改写了CommonConstants.EmployeeMaxHeightInCm,看到它正在编译运行成功。我一直都知道ClassName.MemberName 语法仅适用于类的静态成员,但相同的语法也适用于 const 成员。有人可以帮我理解 C# 语言的这种行为吗?
【问题讨论】:
-
此语法对
const成员也有效。为什么你不这么认为?你有没有说类类型标识符上只有静态成员可用? -
另请注意,您放置
//new constant的成员声明实际上不是常量,而是带有初始值设定项的静态可变字段。请确保我们在这里谈论的是同样的事情。 -
@LasseV.Karlsen。真的。我修改了我的问题。我没有添加一个 const 而是一个公共静态成员。
-
@LasseV.Karlsen 我一直只通过
ClassName.MemberName语法访问静态成员。我不确定是否还有其他类结构也可以使用这种语法。 -
您至少可以访问静态成员(包括 const 成员)、嵌套类型。在我的脑海中,我不确定是否还有其他对于
Type.Name语法是合法的。