Eri*_*ert 27
首先,没有要求我们提供不实现功能的原因.功能非常昂贵; 必须有一个理由为实现一个功能,而不是一个理由不实现一个功能.
其次,C#不是C++或C的克隆.仅仅因为某个功能在某种其他语言中并不是将其放入C#的理由.
第三,"const"在C和C++中被彻底打破."const"不保证你可以真正依赖.如果您是采用const引用的方法的调用者,那么您无法保证该方法遵循constness ; 该方法有许多方法可以改变const引用.如果您是const引用的使用者,那么您无法保证底层对象实际上不会随意变异.由于合同未在呼叫者或被呼叫方执行,因此它远远弱于我们希望在类型系统中进行的任何其他保证.我们不想复制这样一个破碎的系统.
第四,将constness放在CLR类型系统中意味着每种语言都必须使用相同的constness实现; 由于不同的语言对于常量具有不同的含义,这将使得将更多语言带入CLR 变得更加困难,而不是更容易.
没有做这个极其昂贵的功能有很多原因,而且很少有理由这样做.昂贵,不合理的功能无法实现.
C#没有它,因为.NET没有..NET不是因为CLR开发团队认为不值得付出努力.
你可以在MS博客上阅读,比如Raymond Chen的"The Old New Thing"或者Eric Lippert的"编码中的神奇冒险",微软如何优先考虑功能.
| 归档时间: |
|
| 查看次数: |
5755 次 |
| 最近记录: |