7常量
来源:互联网 发布:js跨域请求有什么问题 编辑:程序博客网 时间:2024/05/20 07:58
c#中,const是默认具有static属性的,【这与c++语言有些不同】。因此不允许在const前有static修饰。
说到const,就很难不提到另外一个东西 readonly,readonly只读量。从语义上来说,就是是只读的。c#中可以进行内联赋值或者在构造器中进行赋值,而不允许其他方法对只读量进行改写【可以通过反射进行修改】
那么,const和readonly区别在哪里:
const是常量。readonly是只读量。
const的”常“体现在它是编译时的量,也就是对于const修饰的变量的赋值,必须能够在编译时期获得。
而readonly这种只读量是在运行时获得值。
c#中,const只能用来修饰基元类型【byte,sbyte,int16,int32,bool。。。】,其实也可以修饰引用变量,前提是将其赋值为null.
举个例子说说const和readonly的一个”有趣“的地方:
class ConstV{ public const int age = 15;}
将其编译为一个dll文件。
然后在新项目中引用上面的dll:
class Demo{ public static void Main(String[] args){ System.Console.WriteLine(ConstV.age); }}
编译运行后,将dll文件删除掉,发现依然是可以的,此时,将dll文件中age从15改为1000,运行Demo程序集,结果仍然是15。查看IL代码会发现,age这个值15是直接嵌入到了exe中,除非修改了dll后,再重新编译demo程序集。
而将ConstV中的const改为 static readonly,会发现,demo程序集的运行离不开dll了,当在dll中作出修改,并编译重新生成dll后,不用对demo程序进行重新编译,运行,值依然会发生改变【和dll中一致】。
从这个小例子中应该能够体会出const和readony的一点用途吧。
- 7常量
- 常量
- 常量
- 常量
- 常量
- 常量
- 常量
- 常量
- 常量
- 常量
- 常量
- 常量
- 常量
- 常量
- 常量
- 常量
- 常量
- 常量
- 防火墙技术最高境界—双机热备
- 使用JavaMail发送邮件
- EventBus使用详解(二)——EventBus使用进阶
- PercentRelativeLayout 的使用
- android 多线程断点续传下载---强大的开源XUtils
- 7常量
- Observer 模式浅析
- android 百度地图 实现附近的地理位置信息
- Apache Eagle:分布式实时 Hadoop 数据安全方案
- Python基本语法
- Liberty(controller)
- IoC容器的初始化过程
- Liberty(compute1)
- Firefox 提示event is not defined错误的解决办法