为什么IPAddress构造函数采用Int64而不是UInt32?

时间:2010-02-05 21:20:07

标签: c# .net

为什么IPAddress构造函数采用Int64代替UInt32?根据Reflector,地址在内部存储为Int64m_Address),构造函数将其验证为在UInt32有效的范围内。所以我很好奇为什么它使用Int64而不是UInt32

在有人说IPv6之前.. IPv6大于Int64并存储为UInt16的数组。 Int64构造函数仅用于生成IPv4地址。

1 个答案:

答案 0 :(得分:12)

可能是因为在公共语言基础结构(CLI)标准的Common Language Specification (CLS)中,语言不需要支持无符号类型,因此它们使用最小的符号类型来保存所有可能的无符号值。 / p>

  

.NET Framework类库包含与编译器使用的原始数据类型相对应的类型。在以下类型中,以下是符合CLS的:ByteInt16Int32Int64SingleDouble,{{1 },BooleanCharDecimalIntPtr