EADever Ответов: 1

Как написать перечисление как java в коде C#


Привет, я хочу переместить enum с java на c#, но я не знаю, что делать, поэтому я иду сюда, чтобы спросить вас.
вот Java-код:
@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;
	}

}


Что я уже пробовал:

я пробовал такой код, но не уверен, что он работает.

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];
        }
    }


правильно ли это? или есть другие решения?

1 Ответов

Рейтинг:
9

Richard MacCutchan

Что правильно? Если что-то не работает, пожалуйста, объясните все подробно.

А пока вы могли бы взглянуть на Типы Перечислений (Руководство По Программированию На C# )[^].