1
52
你对原因的观察
UInt32不符合CLS,这意味着它完全不适合在公共api中使用。如果要在私有API中使用uint,这意味着要转换到其他类型——通常保持类型不变更容易、更安全。 我还怀疑,这在C#开发中并不常见,即使C#是唯一使用的语言,主要是因为它在BCL中并不常见。一般来说,开发人员会尝试(谢天谢地)模仿他们正在构建的框架的风格——在C#的情况下,这意味着要使您的API(公共的和内部的)看起来尽可能像.NET框架。这意味着要谨慎使用uint。 |
2
77
|
3
19
正常情况下
最后一个需求经常被遗忘,并且会引入bug:
|
4
13
1) 坏习惯。说真的。即使在C/C++中。
想想共同点
这里绝对没有理由使用整数。你永远不会有负值。但几乎每个人都会这样做一个简单的循环,即使它包含(至少)两个其他“样式”错误。
2)
|
5
5
我更喜欢
|
6
1
老实说,对于我99.9%的工作,我可以很容易地使用ushort,但是int,你知道,听起来比ushort好多了。 |
7
1
UINT非常有用&否则说是愚蠢的。如果有人认为只是因为他们从来没有必要使用uin而没有人会这样想,那你就错了。 |
8
0
我认为这只是懒惰。C#是在台式机和其他资源相对较多的机器上进行开发的固有选择。 C程序员是懒惰的,因为一般来说有足够的资源,没有人真正优化内存使用(一般来说,当然不总是这样)。如果一个字节就足够了,很多C#程序员,包括我在内,为了简单起见就使用int。而且,很多API函数都接受int,因此它阻止了强制转换。 我同意选择正确的数据类型是很好的做法,但我认为主要的动机是懒惰。 最后,选择整数在数学上更为正确。数学中不存在无符号整数(只有自然数)。由于大多数程序员都有数学背景,使用整数更自然。 |
9
0
我认为很大一部分原因是当C第一次出现时,大多数使用的例子
|
10
0
一些语言(例如许多版本的Pascal)认为无符号类型代表数字量;无符号类型和大小相同的有符号类型之间的运算通常会被执行,就好像操作数被提升到下一个较大的类型一样(在某些这样的语言中,最大的类型没有无符号等价物,因此这种提升总是可能的)。 其他语言(例如C)把N位无符号类型看作是一个围绕模2^N的组。注意,从这样一个组中的一个成员中减去N并不代表数字减法,而是得到一个组成员,当N加到这个组中时,这个组成员将得到原来的值。可以说,某些包含有符号和无符号混合值的操作实际上没有意义,可能应该被禁止,但即使是对数字文字等内容的规范不严格的代码通常也能工作,而且编写的代码混合了有符号和无符号类型,尽管不严格,但确实能工作,规格不会很快改变。 只处理有符号类型比处理有符号和无符号类型之间复杂的交互要容易得多。无符号类型在将较大的数字从较小的部分中分解出来(例如,用于序列化)或用于重新构造此类数字时非常有用,但一般来说,对于实际表示数量的事物,最好只使用有符号的数字 |
11
0
我知道这可能是一个老线程,但我想给一些澄清。
主要原因是存储不是一个问题,您不能灵活地将其与其他软件、插件、数据库或Api一起使用。例如,银行需要负数来存储货币等。 我希望这能帮助别人。 |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |