gpt4 book ai didi

c# - 如何处理一个变量中的多个枚举类型

转载 作者:太空狗 更新时间:2023-10-29 20:20:37 25 4
gpt4 key购买 nike

我不知道这是否可行,但我正在使用 XNA 和 C# 编写一个简单的游戏,并且不知何故需要一个特定的变量才能处理多个枚举类型。您控制的角色有一个元素栏,可以是以下水果类型之一:

public enum Fruit : int {Apple, Banana, Orange};
public Fruit carrying;

但是角色也可以携带别的东西:

public enum Misc : int {Parcel, Brush};

我不想将它们全部合并到一个枚举中,因为我希望 Fruit 枚举是不同的,而且我不想必须有两个不同的“携带”变量 - 一个用于 Fruit,一个用于 Misc。

是否有任何方法可以将它们合并为所有五个成员的第三个枚举?例如,一个 super 枚举?

编辑:感谢您的回复。我决定创建一个单一的 Item 类型(其中一个成员是一个枚举,用于区分 Fruit 和 Misc)并通过 XML 将它们加载到一个 List 中。

最佳答案

听起来您可能想要 CarriableItem 或类似的联合类型。例如:

public sealed class CarriableItem
{
public Fruit? Fruit { get; private set; }
public Misc? Misc { get; private set; }

// Only instantiated through factory methods
private CarriableItem() {}

public static CarriableItem FromFruit(Fruit fruit)
{
return new CarriableItem { Fruit = fruit };
}

public static CarriableItem FromMisc(Misc misc)
{
return new CarriableItem { Misc = misc };
}
}

您可能然后想要另一个枚举来指示正在携带的元素类型:

public enum CarriableItemType
{
Fruit,
Misc
}

然后给CarriableItem添加一个属性:

public CarriableItemType { get; private set; }

并在工厂方法中适本地设置它。

那么您的人将只有一个 CarriableItem 类型的变量。

关于c# - 如何处理一个变量中的多个枚举类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21966373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com