我有一个如下所示的枚举:
public enum EnumWeapons { Fists = new WeaponFists(),Sword = new WeaponSword(),Bow = new WeaponBow(),Staff = new WeaponStaff() }
哪些派生自基类武器.
是否有可能以这种方式使用枚举?
如果是这样,我能做以下事情吗? :
public Weapon weapon = (Weapon)EnumWeapons.Fists;
我的尝试没有按预期工作,任何帮助或指导都赞赏:).谢谢!
解决方法
这是不可能的,枚举的基础类型是各种整数类型.从
documentation:
The approved types for an enum are
byte
,sbyte
,short
,ushort
,int
,uint
,long
,orulong
.
此外,我甚至不认为你想要做的事情是有道理的.当你需要武器时,你真的每次都想要相同的实例吗?我对此表示怀疑.
我认为你真正想要的是一家工厂.在它最天真的形式,你可以说:
public enum WeaponType { Fists,Sword,Bow,Staff } public class WeaponFactory { public Weapon Create(WeaponType weaponType) { switch(weaponType) { case WeaponType.Fists: return new WeaponFists(); case WeaponType.Sword: return new WeaponSword(); case WeaponType.Bow: return new WeaponBow(); case WeaponType.Staff: return new WeaponStaff(); default: throw new ArgumentOutOfRangeException("weaponType"); } } }
现在你可以说:
var weapon = weaponFactory.Create(WeaponType.Fists);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。