c# - 为什么 unsigned int 不符合 CLS?

标签 c# .net unsigned-integer cls-compliant

为什么无符号整数不符合 CLS?

我开始认为类型规范只是为了性能而不是为了正确性。

最佳答案

并非所有语言都有无符号整数的概念。例如,VB 6 没有无符号整数的概念,我怀疑这促使 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 时,如果绝对没有概念,为什么要强制他们实现无符号整数以获得 CLS 合规性?

关于c# - 为什么 unsigned int 不符合 CLS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6325/

相关文章:

c# - 覆盖 C# 的虚方法 - 为什么这不会导致无限递归?

c# - 如何从代码隐藏更改 VisualBrush 中使用的 StaticResource 以响应正确的用户输入?

c# - 集成数据库功能

c - 在堆上使用 unsigned

java - Java中如何将字节数组转换为无符号128位整数?

c# - 在 C# 中使用 4D ODBC 驱动程序的异常

c# - 如何使用子对象字段作为 NHibernate 中另一个子对象的复合键的一部分

.net - Entity Framework 4与NHibernate

.net - 合并 GUI 更改

c++ - 如何安全地比较两个无符号整数计数器?