2013-12-14 123 views
1

在C#中,哪些类型可以声明为const什么类型可以声明为const?

const int i = 0; 
const double d = 0; 
const decimal m = 0; 
const referenceType = null; 

有没有我可以参考的综合清单?

回答

4

MSDN明确指出

常量表达式是可以在 编译时完全求值的表达式。因此, 引用类型的常量唯一可能的值是string和null。

从10.4节的C#语言规范。这些是可以使用的类型。

在恒定声明中指定必须为sbyte,字节的类型, 短,USHORT,INT,UINT,长,ULONG,炭,浮点,双精度,小数, 布尔,字符串,枚举类型,或参考类型。每个 常数表达式必须得到目标类型或类型 可以由一个隐式转换被转换为目标类型的一个值

+0

是的,这是规范10.4节!接受这个正确性! – nawfal

0

在C#的上下文中,常数是一种类型的字段或本地变量 ,它们的值在编译时设置,并且在运行 时刻不能更改。它通过具有名称,值和存储位置而与变量类似。然而,它与变量的不同之处在于其在应用程序中只有一次初始化的特性。使用关键字“const”声明一个常量为 。

Constants (C# Programming Guide)

只有内置类型(System.Object的除外)的C#可以声明为常量。有关内置类型的列表,请参阅Built-In Types Table (C# Reference)

  • 布尔字节为sbyte炭小数双浮INT UINT长ULONG对象 短USHORT串
+0

我不认为这些文档很有意义(规范)imo。 'System.Object'和任何其他引用类型可以声明为'const'(除非它们指向null)。 – nawfal

1

从MSDN:

常量是它们在编译时已知的,并且不用于修改不变值程序的生命。常量用const修饰符声明。 只有C#内置类型(不包括System.Object)可以声明为const。有关内置类型的列表,请参阅内置类型表(C#参考)。用户定义的类型,包括类,结构体和数组,不能是const。使用readonly修饰符来创建一个在运行时(例如在构造函数中)初始化一次的类,结构或数组,然后不能更改。

C#不支持const方法,属性或事件。

完整链接:http://msdn.microsoft.com/en-us/library/ms173119.aspx

+0

我不认为这些文档很有意义(规范)imo。 'System.Object'和任何其他引用类型可以声明为'const'(除非它们指向null)。 – nawfal

相关问题