为什么C#容器和GUI类对大小相关的成员使用int而不是uint?

sme*_*lin 9 .net c#

我通常用C++编程,但是对于学校我必须用C#做一个项目.

所以我继续进行编码,就像我习惯于使用C++一样,但是当编译器抱怨代码如下时,我感到很惊讶:

        const uint size = 10;
        ArrayList myarray = new ArrayList(size); //Arg 1: cannot convert from 'uint' to 'int
Run Code Online (Sandbox Code Playgroud)

好吧,他们期望int作为参数类型,但为什么呢?我觉得uint作为参数类型会更舒服,因为uint在这种情况下更适合.

为什么他们在.NET库中几乎无处不在地使用int作为参数类型,即使在很多情况下负数也没有任何意义(因为没有容器或gui元素可以具有负大小).

如果他们使用int的原因是,他们并不期望普通用户关心签名,为什么他们没有为addint添加超载?

这只是MS不关心标志的正确性还是有负值值得一些意义/携带容器/ gui widget/...尺寸的一些信息(错误代码????)?

And*_*are 12

我认为Microsoft选择Int32因为UInt32不符合CLS(换句话说,并非所有使用.NET框架的语言都支持无符号整数).