在C#枚举中使用不同的类型
发布时间:2020-12-15 20:48:57 所属栏目:百科 来源:网络整理
导读:我有一个如下所示的枚举: public enum EnumWeapons{ Fists = new WeaponFists(),Sword = new WeaponSword(),Bow = new WeaponBow(),Staff = new WeaponStaff()} 哪些派生自基类武器. 是否有可能以这种方式使用枚举? 如果是这样,我能做以下事情吗? : publ
我有一个如下所示的枚举:
public enum EnumWeapons { Fists = new WeaponFists(),Sword = new WeaponSword(),Bow = new WeaponBow(),Staff = new WeaponStaff() } 哪些派生自基类武器. 是否有可能以这种方式使用枚举? 如果是这样,我能做以下事情吗? : public Weapon weapon = (Weapon)EnumWeapons.Fists; 我的尝试没有按预期工作,任何帮助或指导都赞赏:).谢谢! 解决方法
这是不可能的,枚举的基础类型是各种整数类型.从
documentation:
此外,我甚至不认为你想要做的事情是有道理的.当你需要武器时,你真的每次都想要相同的实例吗?我对此表示怀疑. 我认为你真正想要的是一家工厂.在它最天真的形式,你可以说: 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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |