【发布时间】:2015-04-27 05:50:10
【问题描述】:
根据this 发布int 是enum 的支持类型。
当我查看.NET的源代码时,System.Enum抽象类继承自System.ValueType抽象类。
但是当我检查 System.Int32 结构时,它继承自接口而不是 System.ValueType。
相反,当我反编译 mscorlib.dll 并检查 Int32 结构时,它说该结构的基类型为 System.ValueType。
但是仍然检查反编译的源代码我看不到任何关于System.ValueType的信息。
这让我觉得 struct 关键字使声明 auto-Sytem.ValueType,微软也在这个 reference 中表示。
但我还有一个问题。据我所知,从同一个父类继承两个不同的类并不意味着一个类也从另一个类继承。我的意思是如果B:A 和C:A 这并不总是意味着C:B。
另外,当我查看源代码时,System.Enum 的实现与System.Int32 的实现完全不同。
那么,在这种情况下,这如何与“System.Int32”作为System.Enum 的支持类型相匹配?
谁能解释一下?
【问题讨论】:
-
"所有值类型均隐式从 System.ValueType 派生。" (msdn.microsoft.com/en-us/library/s1ax56ch.aspx)。
-
绝对不是题外话。您可以删除 P.S 部分:)
-
非常感谢@haim770。这些参考资料非常有用。特别是 StackOverflow 帖子是一流的。
-
谢谢@SonerGönül。我已经删除了 P.S.很高兴我没有犯错。由于它并不完全依赖于编码示例,因此我不太确定 :)
标签: c# .net inheritance enums integer