C# 的 readonly 和 const 关键字
1、静态常量和动态常量
• 在c#语言中,有两种类型的常量,分别是运行时常量和编译时常量;
• 静态常量就是编译时常量,程序一经编译,常量即被赋值,并且不可修改。只能是BCL(Base Class Library)中的基础类型。
• 动态常量就是运行时常量,程序运行时进行赋值,赋值完成后无法更改,也称只读变量。没有类型限制。
2、readonly和const 特性
• readonly 定义的是运行时常量
• const 定义的是编译时的常量
2.1 声明以及初始化
• const 修饰的常量在声明时必须初始化,const修饰的常量本身就是static。
• readonly修饰的常量可以在延迟到构造函数中初始化。
• readonly修饰符支持类类型
2.2 性能
const以字面量形式参与运算,性能略高与readonly。但是对于一般应用而言,这种差异可以忽略不计。
2.3 使用规范
• 取值永远不变,对性能要求苛刻,使用const常量。否则优先考虑readonly。