首先说最重要的一个区别:const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而readonly是在运行时确定其值的。
我们都知道他们的一个相同点:三者所定义的常量在指定初始值后,将无法改变,只读不可写。
除此之外还有以下几点区别和要注意的地方:
1.const只能声明基元类型,枚举类型,字符串类型。readonly则无限制;
2.const天生为静态数据,无需再添加static标识;
3.cosnt较高效,readonly较灵活。在应用上以static readonly代替const,以平衡const在灵活性上的不足,同时克服编译器优化cosnt性能,所带来的程序集引用不一致问题;
4.对于一个 readonly 的 Reference 类型,只是被限定不能进行赋值(写)操作而已。而对其成员的读写仍然是不受限制的。
原文:https://www.cnblogs.com/halfsaltedfish/p/11416168.html