• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#常量——const和readonly

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

C#常量主要分为两种:编译时和运行时常量

编译时常量用关键字const来定义,运行时常量用关键字readonly来定义

两者区别:

   编译时常量,在编译时便用该常量的值代替常量变量。

   运行时常量,在运行时返回一个运行时常量的变量引用

这两种变量引用方式会导致什么不同呢,且看下面代码:

  引用Effective C#中的例子:定义一个类库Limitation,其中呢定义了一个类Limitations,代码如下:

 

 

 

public class Limitations
{
public static readonly int startValue =5;
public const int endValue=10;
}

 

 

该类中包含两个量,一个是编译时常量,一个是运行时常量

我在主程序中,引用该类库,并调用该类的相关值,代码如下:

 

static void Main(string[] args)
{
for (int i = Limitations.startValue; i < Limitations.endValue; i++)
{
Console.WriteLine(i.ToString());
}
Console.Read();
}

 

运行结果:

5

6

7

8

9

现在我更新一下程序集Limitation,代码如下:

 

public class Limitations
{
public static readonly int startValue =105;
public const int endValue=120 ;
}

生成一下,替换掉原来的程序集,运行结果是什么也没有

这是为什么呢?原来是跟两种变量的执行行为有关系,对于编译时常量,在编译时会用其值替换掉所有的编译时常量变量,当你更换程序集时,在引用的程序中,原来编译时常量的值不会改变,所以endValue仍为10;而对于运行时变量,因为在运行时保留的是运行时变量的引用,所以会用新的值代替掉原来的值,导致startValue的值为105.所以没有运行结果。

 

从上边的例子,我们可以看出两种变量的使用情况,如果要使程序有好的可维护性可以选择运行时变量。

对于编译时常量,由于在编译时就已经用值替换了变量,可以使程序在性能上有轻微的提高,所以如果程序很少有变动,则可以选择编译时常量。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#中父类与子类的隐式和显式转换问题发布时间:2022-07-13
下一篇:
C#中usingSystem.Linq命名空间无法引用发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap