У меня есть список, который может быть заполнен значениями из одного из двух перечислений или обоих из них. В основном этот код:Проверьте строку в нескольких Enums с оператором switch
public enum NamesA { Adam , Albert }
public enum NamesB { Bert , Bob }
, а затем
List<string> nameList = new List<string>();
if (reason) nameList.AddRange(Enum.GetNames(typeof(NamesA)));
else if (reason) nameList.AddRange(Enum.GetNames(typeof(NamesB)));
else
{
nameList.AddRange(Enum.GetNames(typeof(NamesA)));
nameList.AddRange(Enum.GetNames(typeof(NamesB)));
}
foreach (string name in nameList)
listBox1.Items.Add(name);
Моя проблема заключается в том, что позже в коде я хочу разные вещи происходят в зависимости от выбора пользователей в ListBox.
Я знаю, что я могу проверить это следующим образом:
string chosenName = listBox1.SelectedItem.ToString();
if (chosenName.Equals(NamesA.Adam.ToString()))
{ /*some stuff happens*/ }
else if (chosenName.Equals(NamesB.Bob.ToString()))
{ /*other stuff happens*/ }
/* ...and so on */
... но я бы предпочел, используя переключатель. Я не могу найти способ работать. У кого-нибудь есть идея?
EDIT: Я хотел бы также сказать, что там должно быть место для коммутатора обрабатывать будущее NamesC, ... D, ... E, и т.д. перечислений.
'переключатель (chosenName) {случай NamesA.Adam.ToString(): // логический разрыв; ....} ' – Developer
' NamesA.Adam.ToString() 'не является постоянным выражением, которое может быть действительным для оператора case. – RBT
Пожалуйста, проверьте мое решение. Надеюсь, этого будет достаточно. – RBT