【发布时间】:2019-09-18 08:59:35
【问题描述】:
我正在寻找一种更好的方法来比较枚举。目前,我有一个具有 3 个不同可能值的枚举:
public enum Elements { fire, water, earth };
但是,当两个元素碰撞时发生某些事情的函数示例:
Public Void ElementCollisionExample(Elements element1, Elements element2){
if (element1 == Elements.fire){
if (element2 == Elements.fire){
//Do stuff
} else if (element2 == Elements.water){
// Do stuff
} else {
// Do stuff
}
} else if (element2 == Elements.water){...etc...}
}
那只适用于火系!
我已经搜索了一段时间,并查看了类似的 SO 问题,但我不确定如何制定问题。我发现的只是诸如“'==' 或 '.Equals()' 比较 Enums 更快吗???”之类的问题,这是完全不同的。
有没有简单的方法来做到这一点?我已经在单独的 Manager 中处理了这些情况,但这仍然让我很恼火。
编辑: 元素的组合总是具有相同的结果。所以火 + 水 = X,水 + 火 = X。
【问题讨论】:
-
你能详细说明你想要做什么吗?我的意思是,
element1和element2是什么?它们是如何关联的,是否有element3(正如你所说的“我有 3 个”......你的意思是 3 个枚举值还是 3 个变量)。请添加一些上下文。也许这是一个 xy 问题,并且有不同的方法。 -
Dictionary<Elements , Dictionary<Elements, Action<..>> actions?然后actions[element1][element2](...)(当然要先设置) -
我已经详细阐述了这个概念。认为这已经足够清楚了,但如果您认为我应该解释更多,请询问。
-
嵌套
switch语句。 -
fire+water与water+fire有不同的结果吗?