c# - 通过继承扩展枚举

标签 c# java .net

我知道这与枚举的想法相悖,但是可以在 C#/Java 中扩展枚举吗?我的意思是“扩展”,既包括向枚举添加新值的意义,也包括从现有枚举继承的面向对象意义。

我认为这在 Java 中是不可能的,因为它最近才得到它们(Java 5?)。不过,C# 似乎更宽容那些想做疯狂事情的​​人,所以我认为这可能以某种方式存在。大概它可以通过反射被破解(不是你每个人都实际使用该方法)?

我不一定对实现任何给定的方法感兴趣,只是在我想到它时激起了我的好奇心:-)

最佳答案

不能扩展 Enums 的原因是它会导致多态性问题。

假设您有一个枚举 MyEnum,其值为 A、B 和 C,并将其扩展为值为 D 作为 MyExtEnum。

假设一个方法在某处需要一个 myEnum 值,例如作为参数。提供一个 MyExtEnum 值应该是合法的,因为它是一个子类型,但是现在当它的值是 D 时你会怎么做?

为了消除这个问题,扩展枚举是非法的

关于c# - 通过继承扩展枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55375/

相关文章:

c# - Winforms:Application.Exit 与 Environment.Exit 与 Form.Close

c# - 大于零的十进制验证

java - 使用 JRE 从 javafx 项目创建可执行 .exe 文件

c# - Double 的 "=="运算符的定义

.net - 如何创建目标框架为 .NET Standard 2.0 的 F# 库?

c# - InvalidOperationException 调用 ResourceManager.GetString 时

c# - 相当于 IntPtr 用法的 VB6

c# - 使用 jQuery load() 调用 .aspx.cs 代码隐藏文件中的函数

java - Google Guice 桌面应用程序 - 如何让它工作?

java - 如何在Scala中实现Java接口(interface)(针对Kafka)?