【问题标题】:Why does IPAddress constructor take Int64 instead of UInt32?为什么 IPAddress 构造函数采用 Int64 而不是 UInt32?
【发布时间】:2010-02-05 21:20:06
【问题描述】:

为什么IPAddress 构造函数采用Int64 而不是UInt32?根据 Reflector,地址在内部存储为 Int64 (m_Address),并且构造函数验证它在 UInt32 的有效范围内。所以我只是好奇为什么它使用Int64 而不是UInt32

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

【问题讨论】:

    标签: c# .net


    【解决方案1】:

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

    .NET Framework 类库包括与编译器使用的原始数据类型相对应的类型。在这些类型中,以下是符合 CLS 的:ByteInt16Int32Int64SingleDoubleBooleanCharIntPtr、@987654和String

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-10
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 2022-12-18
      相关资源
      最近更新 更多