我想从包含三个元素的枚举中选择第三个元素,同时知道我已经选择了哪两个。比较枚举的最有效方法是什么?
编辑:
到目前为止,我想出了以下几点:
Drawable.Row alternateChoice = (Drawable.Row)ExtensionMethods.Extensions.DefaultChoice(new List<int>() { (int)chosenEnum1, (int)chosenEnum2 }, new List<int>() { 0, 1, 2 });
Drawable.Row 是枚举,第一个列表是已经选择的,第二个列表包含可能的选择。DefaultChoice 的定义如下。我知道它具有二次时间复杂性,这就是为什么我要求更好的解决方案:
public static int DefaultChoice(List<int> chosen, List<int> choices)
{
bool found = false;
foreach (int choice in choices)
{
foreach (int chosenInt in chosen)
{
if (chosenInt == choice)
{
found = true;
break;
}
}
if (!found)
{
return choice;
}
found = false;
}
return -1;
}