为什么.NET Framework不使用无符号数据类型?

esa*_*sac 19 .net c# .net-4.0 .net-3.5

可能重复:
为什么Array.Length是int,而不是uint

它背后有一个原因.NET Framework不使用无符号数据类型吗?

我不应该在我的代码中采用它们,但是例如,List <> 的Count属性是一个int.你不能有负数,所以为什么不把它定义为uint?即使我知道计数不能为负,我应该只使用int吗?

And*_*are 20

无符号数字类型不符合CLS,因此它们不应用于任何 API - 尤其是.NET框架.

基本上,符合CLS的代码仅使用所有.NET语言中可用的类型.某些语言(如VB.NET)不支持无符号数字类型.

  • 这并没有真正回答"为什么"的问题,是吗? (21认同)
  • @nikie确实如此.它只是产生了一个新问题:为什么它们不符合CLS. (10认同)
  • @esac:使用.NET 2.0添加了ULong/UInteger (2认同)