编译时常量 vs. 运行时常量:
const 定义的是编译时常量,这意味着它的值在编译时就已经确定,并且在程序的整个生命周期内都不会改变。const 字段通常是静态的,并且必须在声明时初始化。readonly 定义的是运行时常量,它的值可以在运行时初始化,但一旦初始化后就不能被修改。readonly 字段可以是静态的,也可以是实例的。数据类型:
const 字段只能包含内置的值类型(如 int, double, string 等)。readonly 字段可以是任何类型,包括引用类型。初始化时机:
const 字段必须在声明时初始化。readonly 字段可以在声明时初始化,也可以在构造函数中初始化。修改性:
const 字段一旦赋值后,其值不能被修改。readonly 字段一旦赋值后,其值也不能被修改,但它可以在构造函数中进行赋值。作用域:
const 字段是静态的,可以在不创建类实例的情况下访问。readonly 字段可以是静态的也可以是实例的,静态的 readonly 字段可以在不创建类实例的情况下访问,实例的则需要通过类实例来访问。使用场景:
const。readonly。public class MyClass { // const字段,编译时常量,必须在声明时初始化 public const int MyConstValue = 100; // readonly字段,运行时常量,可以在声明时或构造函数中初始化 public readonly int MyReadOnlyValue; public MyClass() { // 初始化readonly字段 MyReadOnlyValue = 200; } }