【发布时间】:2013-12-14 05:13:57
【问题描述】:
在 C# 中,哪些类型可以声明为 const ?
const int i = 0;
const double d = 0;
const decimal m = 0;
const referenceType = null;
我可以参考一个完整的列表吗?
【问题讨论】:
在 C# 中,哪些类型可以声明为 const ?
const int i = 0;
const double d = 0;
const decimal m = 0;
const referenceType = null;
我可以参考一个完整的列表吗?
【问题讨论】:
MSDN 明确指出
常量表达式是可以在 编译时间。因此,常数的唯一可能值 引用类型为 string 和 null。
来自 C# 语言规范的第 10.4 节。这些是可以使用的类型。
常量声明中指定的类型必须是 sbyte, byte, 短,ushort,int,uint,long,ulong,char,float,double,decimal, bool、字符串、枚举类型或引用类型。每个 常量表达式必须产生目标类型或类型的值 可以通过隐式转换转换为目标类型
【讨论】:
来自 MSDN:
常量是不可变的值,在编译时就知道并且在程序的生命周期内不会改变。常量使用 const 修饰符声明。 只有 C# 内置类型(不包括 System.Object)可以声明为 const。有关内置类型的列表,请参阅内置类型表(C# 参考)。用户定义的类型,包括类、结构和数组,不能是 const。使用 readonly 修饰符创建在运行时初始化一次(例如在构造函数中)并且此后无法更改的类、结构或数组。
C# 不支持 const 方法、属性或事件。
【讨论】:
System.Object 和任何其他引用类型都可以声明为const(除非它们指向 null)。
在 C# 的上下文中,常量是一种字段或局部变量 其值是在编译时设置的,并且永远不能在运行时更改 时间。它类似于变量,具有名称、值和 内存位置。但是,它与变量的不同之处在于 在应用程序中只初始化一次的特性。一种 使用关键字“const”声明常量。
Constants (C# Programming Guide)
只有 C# 内置类型(不包括 System.Object)可以声明为 const。有关内置类型的列表,请参阅 Built-In Types Table (C# Reference)。
【讨论】:
System.Object 和任何其他引用类型都可以声明为const(除非它们指向 null)。