`
test_client
  • 浏览: 103900 次
文章分类
社区版块
存档分类
最新评论

广州.Net培训之C#中const与readonly的区别

 
阅读更多

广州.Net培训之C#中const与readonly的区别

    广州传智播客作为广州.Net培训机构的龙头,一直致力于做中国最好的.Net培训机构,要选好的.Net培训机构,就找广州传智播客!以下是由广州传智播客分享的C#中const与readonly的区别文章:

 在日常的编码实践中,我们都知道,对于常量,可以使用const和readonly,当然你可能也知道,一个是在编译时赋值,一个是在运行时赋值,但除了这个区别之外,还有一个更容易出错却不易发现的区别,你就未必知道了吧。

  const:const变量的值是在编译时,变量初始化时被设置的,在其他任何地方都无法改变它的值。如果放在类的字段前面,则该字段自动成为static静态字段,且不能static关键字。由于它的值是在编译时被设置,所以也被称为编译时常量。查阅更多技术视频及文章请登录广州传智播客:.Net培训,广州.Net培训,广州.Net培训机构,.Net培训机构

  readonly:readonly关键字只能用于类的字段前,可以在声明时或类的构造函数两个地方进行赋值,而在其它地方则无法改变其值。由于它的值是在运行时设置的,所以也被称为运行时常量。

  除了上面的区别还有什么区别呢,下面让我来演示给你看。

  假设我有一个类库,里面只有一个类,类的文件名为SampleClass.cs,类中定义了两个整型字段,一个是const常量,一个是readonly常量,并且为其赋值:

  publicconstInt32ConstInteger=333;

  publicreadonlyInt32ReadOnlyInteger=666;

  然后,我们生成这个类库,将它引用到另一个项目中,并把它部署到客户机器上。现在由于客户的需求改变,我们需要将ConstInteger和ReadOnlyInteger两个字段的值分别改为444和777。改完之后,我们重新生成这个类库,并替换掉客户机器上的那个旧的类库文件。到了这里可能你觉得没什么特别的,但当我们去检查更新之后的结果时,令人差异的是ReadOnlyInteger这个字段的值已经变成了777,而ConstInteger这个字段的值却还是原来的333。

  这是为什么呢?

  原因是,如果含有const类型字段的项目作为程序集被其它项目所引用,那么当本项目重新编译时,引用它的那个项目也要重新编译,但如果是readonly就不用了,我想这可能就是它们一个被称为编译时常量,一个被称为运行时常量的原因吧。

  结论:由于了解了这些区别,所以大家在const与readonly的选择上会更有把握一些,希望这些文章对你有所帮助。查阅更多技术视频及文章请登录广州传智播客:.Net培训,广州.Net培训,广州.Net培训机构,.Net培训机构

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics