为什么无符号整数不符合CLS?
我开始认为类型规范只是为了性能而不是为了正确性.
为什么是Array.Length
int,而不是uint
.这让我感到困扰(只是一点点),因为长度值永远不会是负数.
这也迫使我在我自己的类上使用int作为length-property,因为当你指定一个int值时,这需要显式地转换...
所以最终的问题是:对于unsigned int(uint
)有什么用?甚至微软似乎也没有使用它们.
我一直想知道为什么.Count
不是无符号整数而不是有符号整数?
例如,拿ListView.SelectedItems.Count
.元素的数量不能少于0,那么为什么它是一个有符号的int?
如果我尝试测试是否有选择的元素,我想测试
if (ListView.SelectedItems.Count == 0) {}
Run Code Online (Sandbox Code Playgroud)
但因为它是有符号整数,我必须测试
if (ListView.SelectedItems.Count <= 0) {}
Run Code Online (Sandbox Code Playgroud)
或者有什么情况.Count
可能<0?