CLR via C#学习笔记-第九章-常量性

9.6 常量性

有的语言,如非托管C++,允许将方法或参数声明为常量,从而禁止实例方法中的代码更改对象的任何字段,或者更改传给方法的任何对象。CLR没有提供这个功能。

非托管C++将实例方法或参数声明为const只能防止程序员用一般的代码来更改对象或参数。方法内部总是可以更改对象或实参的。

 

要么是通过强制类型转换来去掉常量性,要么通过获取对象/实参的地址,再向那个地址写入。

所有非托管C++像程序员撒了个黄,使他们以为常量对象或实参不能写入。

 

实现类型时,可以避免写操纵对象或实参的代码,

例如String类就没有提供任何能更改String对象的方法,所以字符串是不可变的。

 

CLR没有验证常量对象/实参未被改变的能力,所以CLR将不得不对每个写入操作进行验证,

确定该写入针对的不是常量对象,这对性能影响很大。因此CLR没有提供常量对象/实参的支持

转载于:https://www.cnblogs.com/errornull/p/9833592.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值