为什么unsigned int不符合CLS?
时间:2020-03-05 18:38:40 来源:igfitidea点击:
为什么无符号整数不符合CLS?
我开始认为类型规范只是为了性能而不是正确性。
解决方案
回答
并非所有语言都具有无符号整数的概念。例如,VB 6没有unsigned int概念,我怀疑这促使VB7 / 7.1的设计人员决定也不要实施(现在已在VB8中实施)。
去引用:
http://msdn.microsoft.com/en-us/library/12a7a7h3.aspx The CLS was designed to be large enough to include the language constructs that are commonly needed by developers, yet small enough that most languages are able to support it. In addition, any language construct that makes it impossible to rapidly verify the type safety of code was excluded from the CLS so that all CLS-compliant languages can produce verifiable code if they choose to do so.
更新:几年前我确实对此感到疑惑,尽管我看不到为什么UInt不能进行类型安全性验证,但我猜CLS的人必须在某个临界点上设定一个最低点支持的值类型数。同样,当我们考虑将越来越多的语言移植到CLR的长期目标时,如果绝对没有概念,为什么要强迫它们实现无符号int以获得CLS遵从性呢?
回答
无符号整数不符合CLS,因为它们在某些语言之间不可互操作。
回答
在现实生活中,无符号int不会给我们带来太多好处,但是拥有不止一种int类型会给我们带来痛苦,因此许多语言只使用int。
符合CLS的目的是允许使用多种语言的课程
请记住,没有人能使我们符合CLS。
我们仍然可以在方法内使用无符号整数,也可以将其用作私有方法的参数,因为它仅是CLS兼容限制的公共API。