readonly字段和const字段最大的相似之处是,都不允许在类方法或属性中更改它们的值。最大的不同是,对于const需要在编写代码时给它们赋值(它们的值必须在编译时就被确定),而readonly字段的值可以在类的构造函数中函数中动态地设置。
常量值总是被编译器换成文字值。如果查看编译后的译码,将永远也看不出在使用常量。只可以针对值类型(原始的数据类型:int,char,float,bool等)使用const关键字,而不能在引用类型中使用(如:所创建的类)。
readonly的处理就不一样了。它们不用关心值类型,并且它们可以在类的构造函数中被初始化。静态readonly只能在静态类构造函数中被初始化,实例化的readonly 也只能在实例化的静态构造函数中被初始化。
注意,将引用类型设置为readonly字段,只有该引用是保持只读的。但在对象的内部数据仍然能修改。
常量值总是被编译器换成文字值。如果查看编译后的译码,将永远也看不出在使用常量。只可以针对值类型(原始的数据类型:int,char,float,bool等)使用const关键字,而不能在引用类型中使用(如:所创建的类)。
readonly的处理就不一样了。它们不用关心值类型,并且它们可以在类的构造函数中被初始化。静态readonly只能在静态类构造函数中被初始化,实例化的readonly 也只能在实例化的静态构造函数中被初始化。
注意,将引用类型设置为readonly字段,只有该引用是保持只读的。但在对象的内部数据仍然能修改。