“覆盖”枚举的最佳方式是什么?可能重复:枚举“继承”我有许多扩展抽象类的类。抽象超类定义具有一组值的枚举。有的子类继承父类的枚举值,有的子类需要枚举值不一样。有没有办法以某种方式覆盖这些特定的子类枚举,如果没有,什么是实现我所描述内容的好方法?类ParentClass{私人MyEnumm_EnumVal;publicvirtualMyEnumEnumVal{get{returnm_EnumVal;}设置{m_EnumVal=值;}}publicenumMyEnum{a,b,c};}类ChildClass:ParentClass{privateMyEnumm_EnumVal;publicvirtualMyEnumEnumVal{get{returnm_EnumVal;}设置{m_EnumVal=值;}}publicenumMyEnum{d,e,f};如果您不拥有或不能修改原始基类或枚举,则其他答案是正确的。如果可以,那么您可以使用类型安全的枚举模式。它允许您定义自己的枚举类型,而不是从枚举派生,它们可以做任何您想让它们做的事情(包括支持继承)。publicclassMyEnum{publicstaticreadonlyMyEnumA=newMyEnum("A");publicstaticreadonlyMyEnumB=newMyEnum("B");publicstaticreadonlyMyEnumC=newMyEnum("C");publicoverridestringToString(){返回值;}protectedMyEnum(stringvalue){this.Value=value;}公共字符串值{得到;私有集;}}publicsealedclassMyDerivedEnum:MyEnum{publicstaticreadonlyMyDerivedEnumD=newMyDerivedEnum("D");privateMyDerivedEnum(stringvalue):base(value){}}classProgram{staticvoidMain(string[]args){MyEnumblah=MyEnum.A;System.Console.WriteLine(废话);blah=MyDerivedEnum。D;System.Console.WriteLine(废话);}}ad按任意键继续。..类只允许您覆盖虚拟方法,而不是字段/内部类/枚举。您可以使用new关键字来隐藏内部枚举,但是任何需要基类枚举的方法都与子类的枚举不兼容。classBase{publicenummyEnum{你好,你}publicvoiddoIt(myEnume){控制台。出去。写行(e);}staticvoidMain(string[]args){Basea=newChild();.doIt(Child.myEnum.hello);//这是一个语法错误,因为doIt需要一个Base.myEnum,而不是Child.myEnum。}}classChild:Base{publicnewenummyEnum{hello,my,dear}}您可以使用“new”关键字来覆盖您在基类中定义的字段。C#学习教程就是这些:“覆盖”枚举的最佳方式是什么?如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注——classBase{publicMyEnumA=MyEnum.Default;}classDerived:Base{publicnewMyEnumA=MyEnum.改变了;}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
