大多数时候我们表示永远不会小于 0 的概念。例如声明长度,我们这样写:
int length;
这个名字很好地表达了它的用途,但是你可以给它赋负值。似乎在某些情况下,您可以通过这样写来更清楚地表达您的意图:
uint length;
我能想到的一些缺点:
- 无符号类型(uint、ulong、ushort)不符合 CLS,因此您不能将其用于不支持此功能的其他语言
- .Net 类大部分时间使用有符号类型,因此您必须强制转换
想法?
最佳答案
“身在罗马,入乡随俗。”
虽然理论上在适用的情况下使用无符号值具有优势,因为它使代码更具表现力,但这在 C# 中根本没有实现。我不确定为什么开发人员最初没有设计接口(interface)来处理 uint
并使类型符合 CLS,但现在火车已经离开车站了。
由于一致性通常很重要,因此我建议采用 C# 方式并使用 int
。
关于c# - 使用无符号原始类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33852/