1_readonly与const区别

readonly与const区别?

  1. readonly关键字(运行时常量):字段可以在声明或构造函数中初始化,常作为运行时常量使用。

  2. const关键字(编译时常量):字段只能在该字段的声明时初始化,常作为编译时常量使用过。

C# 中的 readonlyconst 都是用于声明常量的关键字,但它们之间存在一些关键的区别。

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
posted @   甜饼怪2030  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示