C# readonly和const

const

修饰的变量只能在声明的时候赋值进行初始化。

const默认是static的,不能手动为const添加一个static修饰符。

本质上是在编译阶段将使用const的代码处用常量值进行替换,类似c语言中的#define

readonly

readonly变量是运行时变量,可以在声明或构造函数中初始化。

readonly在第一次赋值后不能修改它的值。

区别

  1. const是一个编译时常量,readonly是一个运行时常量。
  2. const只能修饰基元类型,枚举类型或字符串类型,readonly没有限制。

建议

  1. 当值绝对不变的时候使用const,例如一周的天数是7。
  2. 当想要对类的不同实例使用不同的常量,使用readonly
  3. 当在项目的配置文件中配置的项目中的可能会变化的常量,使用static readonly