在C#中,哪些类型可以声明为const
?什么类型可以声明为const?
const int i = 0;
const double d = 0;
const decimal m = 0;
const referenceType = null;
有没有我可以参考的综合清单?
在C#中,哪些类型可以声明为const
?什么类型可以声明为const?
const int i = 0;
const double d = 0;
const decimal m = 0;
const referenceType = null;
有没有我可以参考的综合清单?
嗯MSDN明确指出
常量表达式是可以在 编译时完全求值的表达式。因此, 引用类型的常量唯一可能的值是string和null。
从10.4节的C#语言规范。这些是可以使用的类型。
在恒定声明中指定必须为sbyte,字节的类型, 短,USHORT,INT,UINT,长,ULONG,炭,浮点,双精度,小数, 布尔,字符串,枚举类型,或参考类型。每个 常数表达式必须得到目标类型或类型 可以由一个隐式转换被转换为目标类型的一个值
在C#的上下文中,常数是一种类型的字段或本地变量 ,它们的值在编译时设置,并且在运行 时刻不能更改。它通过具有名称,值和存储位置而与变量类似。然而,它与变量的不同之处在于其在应用程序中只有一次初始化的特性。使用关键字“const”声明一个常量为 。
Constants (C# Programming Guide)
只有内置类型(System.Object的除外)的C#可以声明为常量。有关内置类型的列表,请参阅Built-In Types Table (C# Reference)。
我不认为这些文档很有意义(规范)imo。 'System.Object'和任何其他引用类型可以声明为'const'(除非它们指向null)。 – nawfal
从MSDN:
常量是它们在编译时已知的,并且不用于修改不变值程序的生命。常量用const修饰符声明。 只有C#内置类型(不包括System.Object)可以声明为const。有关内置类型的列表,请参阅内置类型表(C#参考)。用户定义的类型,包括类,结构体和数组,不能是const。使用readonly修饰符来创建一个在运行时(例如在构造函数中)初始化一次的类,结构或数组,然后不能更改。
C#不支持const方法,属性或事件。
我不认为这些文档很有意义(规范)imo。 'System.Object'和任何其他引用类型可以声明为'const'(除非它们指向null)。 – nawfal
是的,这是规范10.4节!接受这个正确性! – nawfal