Использование списка заголовков, которые будут использоваться в коммутаторе

#c# #.net

#c# #.net

Вопрос:

Мне нужно иметь оператор switch, который будет переключаться по списку заголовков. Было бы лучше иметь строку [], перечисление, список и т. Д.? Список будет постоянным, а значения не изменятся.

И как бы я реализовал перечисление, которое переключается между строковыми значениями?

Комментарии:

1. из этих вариантов будет работать только перечисление. Вы не можете включить строковое значение.

2. @Erix Вы можете, если это постоянное время компиляции. Конечно, это и есть string , и нет string[] .

Ответ №1:

  • string[] не будет работать, потому что вы не можете switch использовать его, и каждый случай должен быть элементом с индексом n.
  • List<string> не будет работать по тем же причинам
  • enum я слышал, что это довольно стандартная практика.

Для примера того, о чем я говорю в первых двух примерах:

 switch(l)
{
    case l[0] == "boo":
        break;
}
 

Выдает ошибку компилятора:

 A switch expression or case label must be a bool, char, string, integral, enum, or corresponding nullable type
 

И с радостью, поскольку я не могу себе представить, почему кто-то будет реализовывать это таким образом.

Ответ №2:

Зависит. Если заголовки представляют собой просто строки, которые не являются динамическими, тогда используйте enum . Если заголовки будут иметь другие свойства, используйте массив объектов title. Если количество заголовков может измениться, вам, вероятно, нужен какой-то тип списка. Если количество заголовков останется прежним, но заголовки могут измениться, я бы просто использовал string[] . Но большую часть времени я видел инструкции switch, которые они используют с перечислениями…