我观察了一段时间,C#程序员倾向于在所有地方使用int,很少使用uint。但是我从来没有找到一个令人满意的答案。
如果您希望互操作性成为目标,那么uint不应出现在公共API中,因为并非所有的CLI语言都支持无符号整数。但这并不能解释为什么int如此流行,即使在内部类中也是如此。我怀疑这是uint在BCL中很少使用的原因。
在C ++中,如果您有一个没有负值的整数,则选择一个无符号整数。
这显然表示不允许或期望使用负数,并且编译器将为您做一些检查。我还怀疑在数组索引的情况下,JIT可以轻易放弃下限检查。
但是,在混合int和单位类型时,需要格外小心和强制转换。
应该更多使用uint吗?为什么?