第七章-深入理解类-readOnly和const的区别

70 阅读1分钟

一句话:const是编译时常量,修饰的常量必须在声明时初始化;而readonly是运行时常量,可以选择在声明时初始化或者通过构造函数初始化。

以下是 C# 中 constreadonly 的区别对比,以表格形式展示:

区别点constreadonly
定义对象编译时常量(compile-time constant)运行时常量(runtime constant)
赋值时间必须在声明时赋值可以在声明时赋值,也可以在构造函数中赋值
修改性定义后不能修改赋值后不能修改,赋值只能在初始化阶段
使用场景适用于编译时已知的值适用于运行时计算或依赖构造函数传递的值
数据类型限制只能用于值类型或编译时已知的简单类型(如数字、字符串等)可以用于任何类型,包括引用类型
作用范围隐式地是 static,只能用于类级别的常量可以用于实例级别或静态级别字段
性能开销因为是编译时常量,所以性能更优,编译时直接内联处理运行时分配内存,有一定的性能开销,但支持更多复杂的类型
使用方式const int maxValue = 100;readonly int maxValue;
maxValue = 100;
常见应用数值常量、字符串常量、不可变的配置值需要通过构造函数初始化的不可变字段,或依赖运行时数据的字段

希望这个表格能帮助你更好地理解 constreadonly 在 C# 中的不同应用场景和特性。