哪些类型可以声明为const?

时间:2013-12-14 05:13:57

标签: c# types const constants

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

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

我可以参考一份全面的清单吗?

3 个答案:

答案 0 :(得分:5)

MSDN明确指出

  

常量表达式是一个可以在中完全计算的表达式   编译时间。因此,常量的唯一可能值   引用类型是字符串和null。

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

  

常量声明中指定的类型必须是sbyte,byte,   short,ushort,int,uint,long,ulong,char,float,double,decimal,   bool,string,enum-type或reference-type。每   constant-expression必须产生目标类型或类型的值   可以通过隐式转换

转换为目标类型

答案 1 :(得分:1)

来自MSDN:

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

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

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

答案 2 :(得分:0)

  

在C#的上下文中,常量是一种字段或局部变量   其值在编译时设置,永远不能在运行时更改   时间。它通过具有名称,值和a来类似于变量   记忆位置。但是,它与变量的区别在于它   在应用程序中只初始化一次的特性。一个   使用关键字“const”声明常量。

Constants (C# Programming Guide)

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

  • bool byte sbyte char decimal double float int uint long ulong object 简短的ushort字符串