![]() |
1
5
在罗马的时候,像罗马人一样做。
虽然在适用的情况下使用无符号值在理论上有优势,因为它使代码更具表现力,但这在C#中根本没有实现。我不知道为什么开发人员最初没有设计界面来处理
由于一致性通常很重要,我建议走C#之路,使用
|
![]() |
2
5
如果你用0的值递减一个有符号的数字,它就会变为负数,你可以很容易地进行测试。如果你用0的值递减一个无符号数,它会向下流动并成为该类型的最大值——这有点难以检查。 |
![]() |
3
5
你的第二点是最重要的。一般来说,你应该只使用
|
![]() |
4
2
我认为uint与int的微妙使用会让开发人员感到困惑,除非它被写进公司的开发人员指南中。 例如,如果长度不能小于零,那么它应该在业务逻辑中明确表示,以便未来的开发人员可以阅读代码并知道真正的意图。 只有我的2美分。 |
![]() |
5
2
我要指出的是,在C#中,你可以打开
对于内部代码(即不会在与其他语言的任何互操作庄园中引用的代码),我投票支持在情况需要时使用unsigned,例如
有符号与无符号争论的另一点是,一些程序员使用-1等值来表示错误,否则它们就没有意义了。我同意这样的观点,即每个变量应该只有一个目的,但如果你或你的同事喜欢以这种方式指示错误,那么让变量签名可以让你在以后添加错误状态。 |
![]() |
6
0
你的两点很好。不过,避免这种情况的主要原因是选角。选角让它们使用起来非常烦人。我尝试过一次使用无符号变量,但我不得不在所有地方撒强制转换,因为框架方法都使用有符号整数。因此,无论何时调用框架方法,都必须进行强制转换。 |
![]() |
Estus Flask · 符号字符串强制 8 年前 |
![]() |
banan3'14 · Lambda作为Java中带有参数和原语的方法 8 年前 |
|
Leo Lai · std::map中的基元类型值是否已初始化? 9 年前 |
|
Lincoln Marr · 如何在java中将双精度数分割为整数? 9 年前 |