在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
C#常量主要分为两种:编译时和运行时常量 编译时常量用关键字const来定义,运行时常量用关键字readonly来定义 两者区别: 编译时常量,在编译时便用该常量的值代替常量变量。 运行时常量,在运行时返回一个运行时常量的变量引用 这两种变量引用方式会导致什么不同呢,且看下面代码: 引用Effective C#中的例子:定义一个类库Limitation,其中呢定义了一个类Limitations,代码如下:
该类中包含两个量,一个是编译时常量,一个是运行时常量 我在主程序中,引用该类库,并调用该类的相关值,代码如下:
运行结果: 5 6 7 8 9 现在我更新一下程序集Limitation,代码如下:
生成一下,替换掉原来的程序集,运行结果是什么也没有 这是为什么呢?原来是跟两种变量的执行行为有关系,对于编译时常量,在编译时会用其值替换掉所有的编译时常量变量,当你更换程序集时,在引用的程序中,原来编译时常量的值不会改变,所以endValue仍为10;而对于运行时变量,因为在运行时保留的是运行时变量的引用,所以会用新的值代替掉原来的值,导致startValue的值为105.所以没有运行结果。
从上边的例子,我们可以看出两种变量的使用情况,如果要使程序有好的可维护性可以选择运行时变量。 对于编译时常量,由于在编译时就已经用值替换了变量,可以使程序在性能上有轻微的提高,所以如果程序很少有变动,则可以选择编译时常量。 |
请发表评论