为什么IPAddress
构造函数采用Int64
代替UInt32
?根据Reflector,地址在内部存储为Int64
(m_Address
),构造函数将其验证为在UInt32
有效的范围内。所以我很好奇为什么它使用Int64
而不是UInt32
。
在有人说IPv6之前.. IPv6大于Int64
并存储为UInt16
的数组。 Int64
构造函数仅用于生成IPv4地址。
答案 0 :(得分:12)
可能是因为在公共语言基础结构(CLI)标准的Common Language Specification (CLS)中,语言不需要支持无符号类型,因此它们使用最小的符号类型来保存所有可能的无符号值。 / p>
.NET Framework类库包含与编译器使用的原始数据类型相对应的类型。在以下类型中,以下是符合CLS的:
Byte
,Int16
,Int32
,Int64
,Single
,Double
,{{1 },Boolean
,Char
,Decimal
和IntPtr
。