C#编程:const vs. readonly,编译时与运行时常量的巧妙运用

作者:微信公众号:【架构师老卢】
12-21 14:4
37

概述:在C#中,const和readonly都用于创建常量,但它们有区别。const用于编译时常量,值在声明时确定;readonly用于运行时常量,值在构造函数中确定。const适用于数学常数等静态值,readonly适用于类实例生命周期内保持不变的值

在C#中,constreadonly都用于创建常量,但它们有一些重要的区别。以下是详细讲解以及相应实例代码。

const:

  • const关键字用于创建编译时常量,必须在声明时初始化。
  • 常量值在编译时确定,无法在运行时更改。
  • 常量通常用于定义不变的常量值,如数学常数。
class Program
{
    // 编译时常量
    const int ConstValue = 10;

    static void Main()
    {
        Console.WriteLine(ConstValue);
    }
}

readonly:

  • readonly关键字用于创建运行时常量,可以在构造函数中初始化。
  • 常量值在运行时确定,可以在构造函数中进行初始化。
  • readonly通常用于表示在类的实例生命周期内保持不变的值。
class Program
{
    // 运行时常量
    readonly int ReadOnlyValue;

    // 构造函数中初始化
    public Program()
    {
        ReadOnlyValue = 20;
    }

    static void Main()
    {
        Program program = new Program();
        Console.WriteLine(program.ReadOnlyValue);
    }
}

区别和使用场景:

  • 使用const当你有一个编译时就可以确定的常量值。
  • 使用readonly当你有一个在运行时确定的常量值,尤其是在构造函数中初始化。

const用于编译时常量,readonly用于运行时常量。选择使用哪个关键字取决于常量值何时可知。

阅读排行