C#中有两种常量类型,分别为readonly(运行时常量)与const(编译时常量),本文将就这两种类型的不同特性进行比较并说明各自的适用场景。 工作原理
假设Class1与Class2位于两个不同的程序集,现在更改Class1中的常量值:
性能比较 适用场景 ![]() ![]() ![]() ![]() ![]() 编译Class1并部署(注意:这时并没有重新编译Class2),再次查看变量C的值: ![]() 结果可能有点出乎意料,让我们来仔细观察变量C的赋值表达式: ![]() 编译后与下面的形式等价: ![]() 因此不管常量B的值如何变,对最终结果都不会产生影响。虽说重新编译Class2即可解决这个问题,但至少让我们看到了const可能带来的维护问题。 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
![]() 改成readonly就可以正常编译: ![]()
![]() ![]() 下面的表达式: ![]() 经过编译后与下面的形式等价: ![]() 可以看到,其中的const常量B被替换成字面量3,而readonly常量A则保持引用方式。 |
C#中 readonly与const (转)
最新推荐文章于 2025-08-15 14:15:17 发布