我知道这与枚举的想法相悖,但是可以在 C#/Java 中扩展枚举吗?我的意思是“扩展”,既包括向枚举添加新值的意义,也包括从现有枚举继承的面向对象意义。
我认为这在 Java 中是不可能的,因为它最近才得到它们(Java 5?)。不过,C# 似乎更宽容那些想做疯狂事情的人,所以我认为这可能以某种方式存在。大概它可以通过反射被破解(不是你每个人都实际使用该方法)?
我不一定对实现任何给定的方法感兴趣,只是在我想到它时激起了我的好奇心:-)
最佳答案
不能扩展 Enums 的原因是它会导致多态性问题。
假设您有一个枚举 MyEnum,其值为 A、B 和 C,并将其扩展为值为 D 作为 MyExtEnum。
假设一个方法在某处需要一个 myEnum 值,例如作为参数。提供一个 MyExtEnum 值应该是合法的,因为它是一个子类型,但是现在当它的值是 D 时你会怎么做?
为了消除这个问题,扩展枚举是非法的
关于c# - 通过继承扩展枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55375/