我观察了一段时间,C#程序员倾向于在任何地方使用int,而很少求助于uint。但是我从来没有找到一个令人满意的答案。
如果互操作性是您的目标,uint不应该出现在公共API中,因为并不是所有的CLI语言都支持无符号整数。但这并不能解释为什么int如此流行,甚至在内部类中也是如此。我怀疑这就是为什么uint在BCL中使用得很少的原因。
在C++中,如果有一个负值没有意义的整数,则选择一个无符号整数。
这清楚地表明负数是不被允许或期望的,编译器将为您做一些检查。我还怀疑在数组索引的情况下,JIT可以很容易地放弃下限检查。
但是,当混合int和unit类型时,将需要额外的注意和强制转换。
应该更多地使用uint吗?为什么?
发布于 2010-06-23 02:11:17
我怀疑,您观察到的为什么在BCL中不使用uint
是主要原因。
UInt32不兼容日志服务,这意味着它完全不适合用于公共API。如果你打算在你的私有API中使用uint,这就意味着要转换成其他类型--而且保持类型不变通常更容易也更安全。
我还怀疑这在C#开发中并不常见,即使C#是唯一使用的语言,主要是因为它在BCL中并不常见。一般来说,开发人员试图(谢天谢地)模仿他们正在构建的框架的风格--在C#的例子中,这意味着试图让你的API,无论是公共的还是内部的,看起来尽可能地像.NET框架BCL。这意味着要谨慎地使用uint。
发布于 2010-06-23 02:08:15
int
的类型比uint
短。
发布于 2010-06-23 02:45:01
1)坏习惯。我是认真的。即使在C/C++中也是如此。
想想常见的for
模式:
for( int i=0; i<3; i++ )
foo(i);
这里绝对没有理由使用整数。你永远不会有负值。但几乎每个人都会这样做一个简单的循环,即使它包含(至少)另外两个“样式”错误。
2) int
被认为是机器的本机类型。
https://stackoverflow.com/questions/3095805
复制相似问题