常量
常量就是程序运行过程当中,值不能改变的量,不让我们现实生活中的身份证号、数学运算中的值等,这些都是不会变的,所以它们都可以定义为常量。
常量也可以分为不同种类,比如98、620是整型常量;3.14、0.25是实数常量即浮点型的常量;m、t是字符常量。
const常量
在C#中提到常量,通常指的是const常量。const常量又称为静态常量,它在编译时就已经确定了值。const常量的值必须在声明时就要进行初始化,而且声明之后不可更改。
readonly常量
readonly是一种特殊的常量,也称为动态常量,从字面理解上来看,readonly常量可以进行动态赋值,但需要注意的是,这里的动态赋值是有条件的,它只能在构造函数中进行赋值,例如如下代码:
//author:ailin
//time:2021-10-22
//subject:C#
class Program
{
readonly int Price;//定义一个readonly常量
Program()//构造函数
{
Price=620;//在构造函数中修改readonly常量的值
}
static void Main(string[] argc)
{
Program p = new Program();//创建Program类的对象
p.Price = 520;//试图修改readonly常量的值 会报错 错误原因:readonly常量的值只能在构造函数中修改
}
}
区别
const常量必须在声明时进行初始化,而readonly常量则可以延迟到构造函数中再进行初始化。
const常量在编译时就被解析,即将常量的值替换成了初始化的值,而readonly常量的值需要在运行时确定。
const常量可以定义在类中或方法中,而readonly常量只能定义在类中。