1_readonly与const区别
readonly与const区别?
-
readonly关键字(运行时常量):字段可以在声明或构造函数中初始化,常作为运行时常量使用。 -
const关键字(编译时常量):字段只能在该字段的声明时初始化,常作为编译时常量使用过。
C# 中的 readonly 和 const 都是用于声明常量的关键字,但它们之间存在一些关键的区别。
1. 初始化时机
const必须在声明时初始化,且只能初始化为常量表达式。readonly可以延迟初始化,可以在声明时初始化,也可以在构造函数中初始化。
2. 作用域
const默认是静态的,只能在类级别声明。readonly可以是静态的,也可以是实例的。
3. 存储方式
const在编译时会被替换为实际值。readonly在运行时存储在内存中。
4. 修改
const一旦声明后不能修改。readonly可以通过反射修改。
代码示例
// const 示例
public class ConstExample
{
public const int PI = 3.1415926535;
public void PrintPI()
{
Console.WriteLine(PI);
}
}
// readonly 示例
public class ReadonlyExample
{
public readonly int radius;
public ReadonlyExample(int radius)
{
this.radius = radius;
}
public void PrintArea()
{
Console.WriteLine(Math.PI * radius * radius);
}
}
总结
const用于声明编译时常量,值在编译时确定,不能修改。readonly用于声明运行时常量,值可以在运行时确定,可以被反射修改。
选择使用哪个关键字取决于具体需求:
- 如果需要声明一个编译时常量,使用
const。 - 如果需要声明一个运行时常量,并且需要在构造函数中初始化,使用
readonly。 - 如果需要声明一个可以被反射修改的常量,使用
readonly。

浙公网安备 33010602011771号