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

标签 c# .net

我通常用 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/

相关文章:

c# - 响应 header 设置在 View 中消失 - asp net mvc

C# 暂停异步任务适用于一种方法,但不适用于另一种方法

c# - 类(class)成员是否占用内存?

c# - Entity Framework - 使用 View 加载过多数据

c# - NHibernate 返回错误的对象列表

c# - C# 编译器如何决定发出可重定向的程序集引用?

c# - 非静态字段、方法或属性需要对象引用

.net - 为什么环境变量中有不同的值?

c# - 调试时Epplus Save()、SaveAs()等方法运行非常慢

c# - 将 PowerPoint 查看器包含到我的 WPF 应用程序中