首页 > 编程笔记 > C#笔记 阅读:40

C#中的常量(const和readonly)

C# 程序中,变量是随时可以改变值的量,那么,在遇到不允许改变值的情况时,该怎么办呢?这就是本节将要讲解的常量。

常量就是程序在运行过程中,值不能改变的量,比如现实生活中的居民身份证号码、数学运算中的 π 值等,这些都是不会发生改变的,它们都可以被定义为常量。

常量可以分为不同的类型,比如 98、368 是整数类型常量,3.14、0.25 是实数常量,即浮点类型的常量,'m'、'r' 是字符常量。

C#常量的分类

常量主要有两种,分别是 const 常量和 readonly 常量,下面分别对这两种常量进行讲解。

1) const常量

在 C# 中提到常量,通常指的是 const 常量。

const 常量也叫静态常量,它的值在编译时就已经确定了。const 常量的值必须在声明时就进行初始化,而且之后不可以再更改。

例如,声明一个正确的 const 常量,同时声明一个错误的 const 常量,以便读者对比参考,代码如下:
const double PI = 3.1415926;    // 正确的声明常量的方法
const int MyInt;               // 错误:声明常量时没有初始化

2) readonly常量

readonly 常量是一种特殊的常量,也被称为动态常量。

从字面上理解,readonly 常量可以进行动态赋值,但需要注意的是,这里的动态赋值是有条件的,它只能在构造函数中进行,例如,下面的代码:
class Program
{
    readonly int Price;      // 定义一个readonly常量
    Program()               // 构造函数
    {
        Price = 368;         // 在构造函数中修改readonly常量的值
    }
    static void Main(string[] args)
    {
    }
}

如果要在构造函数以外的位置修改 readonly 常量的值,比如,在 Main() 方法中进行修改,代码如下:
class Program
{
    readonly int Price;      // 定义一个readonly常量
    Program()               // 构造函数
    {
        Price = 368;         // 在构造函数中修改readonly常量的值
    }
    static void Main(string[] args)
    {
        Program p = new Program();    // 创建类的对象
        p.Price = 365;               // 试图对readonly常量的值进行修改
    }
}
这时再运行程序,将会出现如下图所示的错误提示:


图 1 试图在构造函数以外的位置修改 readonly 常量值的错误提示

const常量与readonly常量的区别

const 常量与 readonly 常量的主要区别如下:

相关文章