我想了解为什么在 .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 不是这样设计的?新框架“奥斯陆”会有什么不同吗?