我想了解为什么在 .NET 上有九种整数类型:Char, Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, 和UInt64; 加上其他数字类型:Single, Double, Decimal; 所有这些类型都没有任何关系。
当我第一次开始用 C# 编码时,我想“很酷,有一种uint类型,当不允许使用负值时,我将使用它”。然后我意识到没有使用 API uint,而是使用了 API int,并且它uint不是从 派生的int,因此需要进行转换。
这些类型的实际应用是什么?为什么不具有,而不是integer和positiveInteger?这些是我能理解的类型。一个人的年龄(以岁为单位)是 a positiveInteger,并且因为positiveInteger是一个子集,integer所以无论何时integer都需要转换。
下面是 XPath 2.0 和 XQuery 1.0 中的类型层次结构图。如果你往下看,xs:anyAtomicType你可以看到数字层次结构decimal> integer> long> int> short> byte。为什么.NET 不是这样设计的?新框架“奥斯陆”会有什么不同吗?
