readonly and const

Tags
readonly
const
内存分配方式
运行时确认
编译时确认,无额外内存开销
声明位置
只能声明为类变量
可以在函数体中
类型限制
仅字面值类型
赋值
可以在构造方法里面赋值
只能在声明时赋值
性能
开销大
 

readonly的使用

对于静态只读字段,只能在声明和静态构造器中对其进行初始化
struct Color{ public int red; public int blue; public int green; } class Brush{ public static readonly Color defaultColor; static Brush{ defaultColor = new Color{red = 0, blue = 0, green = 0}; } }
Actually, readonly字段 完全可以通过 只读自动实现属性来替代 (C# 6.0之后)
public bool [, ,] Cells { get; } = new bool[2, 2, 3];
 

调用不同程序集的public const常量

调用不同程序集的public const常量时,这常量值会直接编译到对应程序集中。在修改原常量时若不重新编译 「调用其的程序集」,则「调用其的程序集」中的变量不会变化。所以将来可能会变的东西还是指定为readonly