在C#枚举中使用不同的类型

在C#枚举中使用不同的类型,第1张

概述我有一个如下所示的枚举: public enum EnumWeapons{ Fists = new WeaponFists(), Sword = new WeaponSword(), Bow = new WeaponBow(), Staff = new WeaponStaff()} 哪些派生自基类武器. 是否有可能以这种方式使用枚举? 如果是这样,我能做以下事情 我有一个如下所示的枚举:

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,or ulong.

此外,我甚至不认为你想要做的事情是有道理的.当你需要武器时,你真的每次都想要相同的实例吗?我对此表示怀疑.

我认为你真正想要的是一家工厂.在它最天真的形式,你可以说:

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#枚举中使用不同的类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1226135.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存