类和结构可以将常数声明为成员。常数是在编译时已知并保持不变的值。(若要创建在运行时初始化的常数值,请使用 readonly 关键字。)常数被声明为字段,声明时在字段的类型前面使用 const 关键字。常数必须在声明时初始化。例如:
C# | ![]() |
---|---|
class Calendar1 { public const int months = 12; } |
在此示例中,常数 months
将始终为 12,不能更改 - 即使是该类自身也不能更改它。常数必须属于整型(sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal、bool 或 string)、枚举或对 null 的引用。
可以同时声明多个相同类型的常数,例如:
C# | ![]() |
---|---|
class Calendar2 { const int months = 12, weeks = 52, days = 365; } |
只要不会造成循环引用,用于初始化一个常数的表达式就可以引用另一个常数。例如:
C# | ![]() |
---|---|
class Calendar3 { const int months = 12; const int weeks = 52; const int days = 365; const double daysPerWeek = days / weeks; const double daysPerMonth = days / months; } |
常数可标记为 public、private、protected、internal 或 protectedinternal。这些访问修饰符定义类的用户访问该常数的方式。有关更多信息,请参见访问修饰符(C# 编程指南)。
尽管常数不能使用 static 关键字,但可以像访问静态字段一样访问常数。未包含在定义常数的类中的表达式必须使用类名、一个句点和常数名来访问该常数。例如:
C# | ![]() |
---|---|
int birthstones = Calendar.months; |