すでに選択した2つを知りながら、3つの要素を含む列挙型から3番目の要素を選択したいと思います。列挙型を比較する最も効率的な方法は何ですか?
編集:
これまでのところ、私は次のことを思いついた:
Drawable.Row alternateChoice = (Drawable.Row)ExtensionMethods.Extensions.DefaultChoice(new List<int>() { (int)chosenEnum1, (int)chosenEnum2 }, new List<int>() { 0, 1, 2 });
Drawable.Rowは列挙型であり、最初のリストはすでに選択されているものであり、2番目のリストには可能な選択肢が含まれています。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;
}