不知道你们对const和readonly关键字二者的区别了解多少,若是你也不是很清楚的话,那就一块儿来探讨吧!探讨以前咱们先来了解静态常量和动态常量。编辑器
所谓静态常量就是在编译期间会对变量进行解析,再将常量的值替换成初始化的值。函数
所谓动态常量就是编译期间会将变量标记只读常量,而不用常量的值代替,这样在声明时能够不初始化,能够延迟到构造函数初始化。测试
const修饰的常量是上述中的第一种,即静态常量,而readonly是上述中第二种即动态常量。他们的区别能够从静态常量和动态常量的特性来讲明:spa
1. 若是咱们在const修饰的常量前加static的话,会提示错误,由于const编译后就是static常量了。(PM:若是不编译的话,编辑器不会报错。编译后,再提示错误! )3d
class Program { static const int temp = 100; static void Main(string[] args) { } }
2. readonly修饰的在构造函数中被赋值后就不能够改变。code
3.代码以下:blog
class Program { static readonly int A = B * 10; static readonly int B = 10; public static void Main(string[] args) { Console.WriteLine("A is {0},B is {1} ", A, B); Console.ReadLine(); } }
readonly是动态常量,在编译期间是不会解析的,因此开始就是默认值, A和B都是int类型,值都是0,因此A=0*10=0,程序接着执行到B=10,才会真正的B的初值10赋给B。内存