【CSharp】常量与只读变量

常量(const)

常量是其值在使用过程中不会发生变化的变量。在声明和初始化变量时,在变量的前加上const关键字。

常量具有以下特点:

  • 常量必须在声明时初始化。指定了其值后不能改变。
  • 常量的值必须能够在编译时用于计算。因此,不能从变量中提取的值来初始化常量。如果需要这么做,应使用只读变量。
  • 常量总是隐式静态的。但主要,不必(实际上,不允许)在常量生命中包含static修饰符。

只读变量(readonly)

只读变量允许把一个字段设置成常量,但可以执行一些运算,可以确定它的初始值。因为 readonly 是在计算时执行的,当然它可以用某些变量初始化。

readonly 是实例成员,所以不同的实例可以有不同的常量值,这使readonly更灵活。

区别

  • 常量只能在声明时初始化。只读变量可以在声明或构造函数中初始化
  • 常量字段是编译时常数,而 readonly 字段可用于运行时常数。
  • 常量默认就是静态的,而 readonly 如果设置成静态的就必须显示声明。
  • 常量对于引用类型的常数,可能的值只能是 string 和 null。readonly可以是任何类型

你可能感兴趣的:(CSharp)