一尘不染

为什么unsigned int不符合CLS?

c#

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

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


阅读 231

收藏
2020-05-19

共1个答案

一尘不染

并非所有语言都具有无符号整数的概念。例如,VB 6没有unsigned int的概念,我怀疑这促使VB7 /
7.1的设计人员决定也不要实施(现在已在VB8中实施)。

报价:

http://msdn.microsoft.com/en-
us/library/12a7a7h3.aspx

CLS设计得足够大,可以包含开发人员通常需要的语言结构,但又要足够小,以至于大多数语言都可以支持它。此外,CLS排除了任何无法快速验证代码类型安全的语言构造,因此,所有兼容CLS的语言都可以选择生成可验证的代码。

更新:几年前,我确实对此感到疑惑,尽管我看不到为什么UInt不能进行类型安全性验证,但我想CLS专家们必须在某个基准点上设置一个临界点支持的值类型数。同样,当您考虑将越来越多的语言移植到CLR的长期目标时,如果绝对没有概念,为什么要强迫它们实现无符号int以获得CLS遵从性呢?

2020-05-19