我通常用 C++ 编程,但为了上学我必须用 C# 做一个项目。
所以我继续像在 C++ 中习惯的那样编码,但是当编译器提示如下代码时我感到很惊讶:
const uint size = 10;
ArrayList myarray = new ArrayList(size); //Arg 1: cannot convert from 'uint' to 'int
好吧,他们期望 int 作为参数类型,但为什么呢?我会觉得将 uint 作为参数类型会更舒服,因为 uint 在这种情况下更适合。
为什么在 .NET 库中几乎所有地方都使用 int 作为参数类型,即使在许多情况下负数没有任何意义(因为容器和 gui 元素都不能有负大小)。
如果他们使用 int 的原因是他们不希望普通用户关心符号性,那么他们为什么不另外为 uint 添加重载?
这只是 MS 不关心符号正确性,还是在某些情况下负值有意义/携带一些容器/gui 小部件/...大小的信息(错误代码????)?
最佳答案
我认为 Microsoft 选择 Int32
是因为 UInt32
不符合 CLS(换句话说,并非所有使用 .NET 框架的语言都支持无符号整数)。
关于c# - 为什么 C# 容器和 GUI 类对与大小相关的成员使用 int 而不是 uint?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2705497/