1_readonly与const区别

readonly与const区别?

  1. readonly关键字(运行时常量):字段可以在声明或构造函数中初始化,常作为运行时常量使用。

  2. const关键字(编译时常量):字段只能在该字段的声明时初始化,常作为编译时常量使用过。

C# 中的 readonlyconst 都是用于声明常量的关键字,但它们之间存在一些关键的区别。

1. 初始化时机

  • const 必须在声明时初始化,且只能初始化为常量表达式。
  • readonly 可以延迟初始化,可以在声明时初始化,也可以在构造函数中初始化。

2. 作用域

  • const 默认是静态的,只能在类级别声明。
  • readonly 可以是静态的,也可以是实例的。

3. 存储方式

  • const 在编译时会被替换为实际值。
  • readonly 在运行时存储在内存中。

4. 修改

  • const 一旦声明后不能修改。
  • readonly 可以通过反射修改。

代码示例

// const 示例
public class ConstExample
{
    public const int PI = 3.1415926535;

    public void PrintPI()
    {
        Console.WriteLine(PI);
    }
}
// readonly 示例
public class ReadonlyExample
{
    public readonly int radius;

    public ReadonlyExample(int radius)
    {
        this.radius = radius;
    }

    public void PrintArea()
    {
        Console.WriteLine(Math.PI * radius * radius);
    }
}

总结

  • const 用于声明编译时常量,值在编译时确定,不能修改。
  • readonly 用于声明运行时常量,值可以在运行时确定,可以被反射修改。

选择使用哪个关键字取决于具体需求:

  • 如果需要声明一个编译时常量,使用 const
  • 如果需要声明一个运行时常量,并且需要在构造函数中初始化,使用 readonly
  • 如果需要声明一个可以被反射修改的常量,使用 readonly
posted @ 2024-03-03 23:04  甜饼怪2030  阅读(75)  评论(0)    收藏  举报