常量一般分为直接常量和符号常量。
1 直接常量
直接常量是指把程序中不变的量直接硬编码为数值与字符串值。例如:
100 //整型直接常量
1.23e5 //浮点型直接常量
true //布尔型直接常量
“中华人民共和国” //字符串型常量
null //对象引用常量,表示空
在程序中书写一个十进制的数值常数,c#默认按照如下方法判断一个数值常数据属于哪种c#数值类型:
~如果一个数值常数不带小数点,例如12345,则这个常数的类型是整型。
~对于一个属于整型的数值常数,c#按int,uint,long,ulong的顺序判断该数的类型。
~如果一个数值常数带一个小数点,如3.14,则该常数的类型是浮点型中的double类型。
如果不希望c#使用上述默认的方法来判断一个十进制数值常数的类型,可以通过给数值常数后加后缀的方法指定数值常数的类型,可以使用的数值常数后缀有以下几种。
u:加在整数后,代表该常数是unit或者ulong类型,具体由常数的实际值判定,c#优先匹配unit。
l:在整型常数后,代表该常数是long或者ulong类型,优先匹配long类型。
ul:在整数常数后面,代表是ulong类型。
m后缀:加在任何一种数值常数后,代表常数是decimal类型。
f:加在任何一种数值常数后,代表float型。
d:加在任何一种数值常数后面,代表double型。
2 符号常量
符号常量是通过关键字const声明的常量,包括常量的名称和它的值。常量的声明如下,包括常量的名称和它的值。常量的声明如下:
const 数据类型 常量名 = 初始值 ;
其中,”常量名“必须是c#的合法标识符,在程序中通过常量名来访问该常量。“类型标识符”指示了所定义的常量的数据类型,而初始值是所定义的常量的值。
符号常量具有以下特点:
在程序中常量只能被赋予初始值,一旦赋予一个常量初始值,这个变量的值在程序的运行过程中不允许被改变,即无法为一个常量赋值。
在定义常量时,表达式中的运算符对象只允许出现常量和常数,不能有变量存在。
例如:
//以下定义了一个double类型的常量PI,它的值是3.14159265
const double PI =3.1415926;
//和变量的声明一样,也可以同时声明一个或多个给定类型的常量,例如
const double x = 1.0, y = 2.0;z = 3.0;
//以下代码是错误的,因为将一个变量的值用一个变量来初始化
int i =10;
const int a = i;//给常量赋值错误