public enum EnumWeapons{ Fists = new WeaponFists(),Sword = new WeaponSword(),Bow = new WeaponBow(),Staff = new WeaponStaff()}
哪些派生自基类武器.
是否有可能以这种方式使用枚举?
如果是这样,我能做以下事情吗? :
public Weapon weapon = (Weapon)EnumWeapons.Fists;
我的尝试没有按预期工作,任何帮助或指导都赞赏:).谢谢!
@H_419_26@解决方法 这是不可能的,枚举的基础类型是各种整数类型.从 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);总结
以上是内存溢出为你收集整理的在C#枚举中使用不同的类型全部内容,希望文章能够帮你解决在C#枚举中使用不同的类型所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)