c# const与readonly的区别

const与readonly的区别

1.const

  • 用于声明局部常量,在编译时确定值,声明时必须有初始值,且不可以在运行时改变,可读不可写。
  • 常量字段默认成为静态字段,不能用static修饰,否则造成编译错误。原因:不需要为每个对象实例都生成一个新的字段实例。

声明常量字段如下:

class ConvertUnits
{
    public const float Pi = 3.14F;
    public const int Length = 10;
}

2.readonly

  • 只能用于声明字段,修饰类的field,不能修饰局部变量,也不能修饰property等其他类成员。声明时,可以不初始化。
  • 每个实例的readonly字段的值都可以不同,运行时可改变。可通过构造器来更改为一个新值。
  • 可以用static修饰,在运行时计算出值。

声明常量字段如下:

class ConvertUnits
{
    public static readonly MyClass myClass = new MyClass(10);  //静态可读字段;通过构造函数来改变readonly字段的值
    public static int B = 10;  //静态字段,可读可写
    public static readonly int A = B * 20;  //运行时计算值

}

class MyClass
 {
     private readonly int id { get; set; }  //实例可读字段;此处不能用static修饰
     public MyClass(int id)
     {
         this.id = id;//只读字段
     }
 }

总结:const是编译时常量,readonly是运行时常量;cosnt较高效,readonly较灵活。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值