const用于编译时常量,必须在声明时初始化,仅支持基本类型、enum和string,值嵌入调用代码;readonly用于运行时常量,可在声明或构造函数中赋值,支持所有类型,每实例可不同;需运行时计算或复杂类型时用readonly,全局唯一延迟初始化可用static readonly。
const 和 readonly 都可用于定义不可变的值,但它们在使用时机、赋值方式和适用范围上有明显区别。
const int MaxValue = 100; const s特点:tring Version = "1.0"; const bool IsDebug = true;
public class Config
{
public readonly int Timeout;
public readonly DateTime CreatedTime;
public Config(int timeout)
{
Timeout = timeout;
CreatedTime = DateTime.Now;
}
}
特点:
public static class GlobalConfig
{
public static readonly DateTime LaunchDate = new DateTime(2025, 4, 1);
}
这种写法适合需要延迟初始化的全局常量。
基本上就这些。const 简单高效但限制多,readonly 更灵活适用于复杂场景。