我知道这有点违反枚举的想法,但是可以在C#/ Java中扩展枚举吗?我的意思是“扩展”,既是向枚举添加新值,也就是从现有枚举继承的OO。
我认为这在Java中是不可能的,因为它是最近才得到的(Java 5?)。但是,C#似乎更愿意容忍那些想做疯狂事情的人,因此我认为这可能是有可能的。大概可以通过反思来破解它(不是每个人都实际使用该方法)?
我不一定对实现任何给定的方法感兴趣,它只是在引起我好奇时才引起我的好奇:-)
您无法扩展Enums的原因是,这将导致多态性问题。
假设您有一个枚举MyEnum,其值分别为A,B和C,并将其值D扩展为MyExtEnum。
假设某个方法在某处期望myEnum值,例如作为参数。提供MyExtEnum值应该是合法的,因为它是子类型,但是现在当值变成D时,您将如何处理?
为了消除此问题,扩展枚举是非法的