C#中const和readonly区别

avatar
作者
筋斗云
阅读量:0
  1. 编译时常量 vs. 运行时常量:

    • const 定义的是编译时常量,这意味着它的值在编译时就已经确定,并且在程序的整个生命周期内都不会改变。const 字段通常是静态的,并且必须在声明时初始化。
    • readonly 定义的是运行时常量,它的值可以在运行时初始化,但一旦初始化后就不能被修改。readonly 字段可以是静态的,也可以是实例的。
  2. 数据类型:

    • const 字段只能包含内置的值类型(如 intdoublestring 等)。
    • readonly 字段可以是任何类型,包括引用类型。
  3. 初始化时机:

    • const 字段必须在声明时初始化。
    • readonly 字段可以在声明时初始化,也可以在构造函数中初始化。
  4. 修改性:

    • const 字段一旦赋值后,其值不能被修改。
    • readonly 字段一旦赋值后,其值也不能被修改,但它可以在构造函数中进行赋值。
  5. 作用域:

    • const 字段是静态的,可以在不创建类实例的情况下访问。
    • readonly 字段可以是静态的也可以是实例的,静态的 readonly 字段可以在不创建类实例的情况下访问,实例的则需要通过类实例来访问。
  6. 使用场景:

    • 当你需要一个在程序中任何地方都不变的值时,使用 const
    • 当你需要一个在对象构造时赋值,并且在之后不变,或者需要存储引用类型的值时,使用 readonly
public class MyClass {     // const字段,编译时常量,必须在声明时初始化     public const int MyConstValue = 100;      // readonly字段,运行时常量,可以在声明时或构造函数中初始化     public readonly int MyReadOnlyValue;      public MyClass()     {         // 初始化readonly字段         MyReadOnlyValue = 200;     } }

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!