如何在C#代码中编写类似java的枚举 [英] How to write enum like java in C# code

查看:235
本文介绍了如何在C#代码中编写类似java的枚举的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨我想将enum从java移到c#但是我不知道什么todo所以我去这里问你。

这里是java代码:

Hi i want to move enum from java to c# but i dont know what todo so im going here to ask you.
here is java code:

@XmlEnum
public enum ItemAttackType {
	PHYSICAL(false, SkillElement.NONE),
	MAGICAL_EARTH(true, SkillElement.EARTH),
	MAGICAL_WATER(true, SkillElement.WATER),
	MAGICAL_WIND(true, SkillElement.WIND),
	MAGICAL_FIRE(true, SkillElement.FIRE);

	private boolean magic;
	private SkillElement elem;

	private ItemAttackType(boolean magic, SkillElement elem) {
		this.magic = magic;
		this.elem = elem;
	}

	public boolean isMagical() {
		return magic;
	}
	
	public SkillElement getMagicalElement() {
		return elem;
	}
}







public enum SkillElement {
	NONE(0),
	FIRE(1),
	WATER(2),
	WIND(3),
	EARTH(4),
	LIGHT(5),
	DARK(6);

	private int element;

	private SkillElement(int id) {
		this.element = id;
	}

	public int getElementId() {
		return element;
	}

}





我尝试过:



i尝试这样的代码,但我不确定它的工作。





What I have tried:

i tried code like this but im not sure its work.

public enum ItemAttackType
    {
        PHYSICAL,
        MAGICAL_EARTH,
        MAGICAL_WATER,
        MAGICAL_WIND,
        MAGICAL_FIRE
    }

    public enum SkillElement
    {
        NONE=0,
        FIRE=1,
        WATER=2,
        WIND=3,
        EARTH=4,
        LIGHT=5,
        DARK=6
    }







public class ItemAttackTypeUtil
    {
        private static readonly IDictionary<itemattacktype, itemattacktypeutil=""> PLANETS = new Dictionary<itemattacktype, itemattacktypeutil="">();
        SkillElement guardRace;
        bool isMagic;

        static ItemAttackTypeUtil()
        {
            PLANETS.Add(ItemAttackType.PHYSICAL, new ItemAttackTypeUtil(SkillElement.NONE, false));
            PLANETS.Add(ItemAttackType.MAGICAL_EARTH, new ItemAttackTypeUtil(SkillElement.EARTH, true));
            PLANETS.Add(ItemAttackType.MAGICAL_WATER, new ItemAttackTypeUtil(SkillElement.WATER, true));
            PLANETS.Add(ItemAttackType.MAGICAL_WIND, new ItemAttackTypeUtil(SkillElement.WIND, true));
            PLANETS.Add(ItemAttackType.MAGICAL_FIRE, new ItemAttackTypeUtil(SkillElement.FIRE, true));
        }

        public ItemAttackTypeUtil(SkillElement guardRace, bool isMagic)
        {
            this.guardRace = guardRace;
            this.isMagic = isMagic;
        }

        public static ItemAttackTypeUtil GetUtil(ItemAttackType tribe)
        {
            return PLANETS[tribe];
        }
    }





是正确的吗?或者有其他解决方案?



is its correct? or have another solutions?

推荐答案

这是正确的吗?如果某些东西不起作用,请详细说明。



在此期间你可以看一下枚举类型(C#编程指南) [ ^ ]。
Is what correct? If something does not work then please explain in proper detail.

In the meantime you could take a look at Enumeration Types (C# Programming Guide)[^].


这篇关于如何在C#代码中编写类似java的枚举的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆