比较const ,readonly, stitac readonly
比较const ,readonly, stitac readonly:
- const和readonly的值一旦初始化则都不再可以改写;
- const必须在声明时初始化;readonly既可以在声明时初始化也可以在构造器中初始化,因为见4;
- const隐含static,不可以再写static const;readonly则不默认static,如需要可以写static readonly;
-
const是编译期静态解析的常量(因此其表达式必须在编译时就可以求值);readonly则是运行期动态解析的常量,static readonly字面就是实例时赋值;
- const既可用来修饰类中的成员,也可修饰函数体内的局部变量;readonly只可以用于修饰类中的成员。
- const访问必须以"Classname.VariableName"方式访问,而readonly访问必须以"InstanceName.VariableName"方式访问。
代码说明问题
const关键字
class ConstantEx { public const int number =3; } class Program { static void Main(string[] args) { //如果这里使用 ConstantEx.number=10 会出错,在整个app内该值不可改变 Console.WriteLine(ConstantEx.number);// 类名+常量访问 Console.ReadLine(); } }
readonly关键字
class ReadOnlyEx { //说明该值可以在运行时改变,即在实例化时改变该值 public readonly int number = 10; public ReadOnlyEx() { number =20; } public ReadOnlyEx(bool IsDifferentInstance) { number = 100; } } class Program { static void Main(string[] args) { //必须实例化后访问 ReadOnlyEx readOnlyInstance = new ReadOnlyEx(); Console.WriteLine(readOnlyInstance.number); ReadOnlyEx differentInstance = new ReadOnlyEx(true); Console.WriteLine(differentInstance.number); Console.ReadLine(); } }
劳神费力的,点歌赞打赏打赏