【问题标题】:What does it mean to have overlapping enum values for AddressFamily (e.g. NS and Ipx)?AddressFamily 的枚举值重叠意味着什么(例如 NS 和 Ipx)?
【发布时间】:2019-08-02 09:28:45
【问题描述】:

我知道 enums 可以有 重叠 值,因为最终枚举只是 ints 并且多个 事物 可以有 相同int。对我来说(也许这是需要澄清的一点),这意味着共享相同 int 的那 2+ 个事物在所有意图和目的上都是相同的。

那么问题来了:

  1. AddressFamily 的枚举让多个协议共享相同的枚举值意味着什么?例如,NS 和 Ipx 都是 6,但 NS 是“Xerox NS 协议的地址”,而 Ipx 是“IPX 或 SPX 地址”。 Iso 和 Osi 也共享相同的值 (7),但分别具有“ISO 协议地址”和“OSI 协议地址”的含义。

半相关问题:Enums, overlapping values, C#

  • 这似乎并没有真正给出关于为什么重叠枚举的结论性答案
  • 也没有给出关于在实践中具有重叠枚举值的真正含义的结论性答案。

【问题讨论】:

  • 您的问题是为什么 C# enums 可以具有相同的值,或者为什么特定示例可以具有相同的值?也许在AddressFamily 示例中,某些值是相同的,因为归根结底它们只是同一枚硬币的两个面?
  • @MickyD 更多的是关于特定示例的原因。我分享了共享枚举值的背景,这样人们就不会开始重新回答这个问题,同时也认识到我的基本理解可能在某种程度上是错误的,导致我的困惑有一个简单的澄清。不过,情况似乎并非如此。
  • 没问题的好先生。我已经有一段时间没有听到“IPX”了。我第一次玩局域网游戏的美好回忆:D
  • @MickyD good *ma'am :)

标签: enums network-protocols


【解决方案1】:

OSI model 也可以称为 ISO 模型。事实上,我将它作为 ISO-OSI 模型学习的。部分原因是这是定义它的组织的名称。部分原因是您也可以反过来查看:物理层为 7,应用程序为 1。此时您也可以翻转字母。

至于IPX和NS,值得记住的是,这个枚举的目的是“指定Socket类的实例可以使用的寻址方案”。

作为wikipedia points out

“Internetwork Packet Exchange (IPX) 是 IPX/SPX 协议套件中的网络层协议。IPX 源自 Xerox Network Systems 的 IDP。”我猜 NS 在过去曾经是它自己的东西。但如今,即使是后续的 IPX 也几乎不被人记住了。很难说,因为我在 Wikipedia 上找不到“xerox ns 协议”,但由于 IDP 也来自 Xerox,所以这个猜测很可靠。那时候他们还在做整个“Format War IX - Networking Edition”。

这种情况下的枚举通常被输入到 switch/case 块中。我想为此 - 在实际代码中 - 没有区分是必要的。然而人们仍然觉得他们需要在那个枚举中的两个值。如果出现任何问题“NS/IPX 在哪里?”

拥有多个具有相同值的 Enum 的唯一问题是从 Integer 获取 Enum 是困难的。然而,由于 Enumeartions 被设计为编译时间常数,这几乎不是问题。

【讨论】:

  • 我想我现在在 XNS 下找到了一个 NS 的维基百科条目。它显然是 OSI 模型的当代对手,但只有 5 层:en.wikipedia.org/wiki/Xerox_Network_Systems
  • 为什么不将您的评论合并到您的好答案中好先生? :) 无论如何,+1 给你。另外在排名前 0.18% 方面做得很好this week!!
猜你喜欢
  • 2022-01-06
  • 2015-10-02
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多