Ссылка на содержимое файла в операторе switch case в C # / Mono? - PullRequest
0 голосов
/ 10 ноября 2010

Я настраиваю систему меню, при которой пользователя просят выбрать радиостанцию ​​из списка, и для простоты использования в будущем я хочу, чтобы этот список был в файле с именем StationList. Этот бит все отсортировано, но у меня проблема с процессом выбора.

Есть ли способ иметь ссылку на оператор обращения для StationList для действительных случаев вместо необходимости вводить их все вручную? Я осмотрелся вокруг, и, похоже, не было немедленного ответа: имейте в виду, что я учу его всего две недели:)

Заранее спасибо!

Пример:

i = (an element from iterating through StationList)

switch (selection)
{
case (i):
    i = (int)Choice.GoodChoice;
    Console.WriteLine("You chose " + selection + " radio!");
    break;
case "!exit":
case "!!":
    i = (int)Choice.ExitChoice;
    break;
case "!info":
    TitleScreen();
    Console.ForegroundColor = ConsoleColor.Green;
    break;
default:
    Console.WriteLine("Invalid selection! Please try again!");
    break;
}

1 Ответ

1 голос
/ 10 ноября 2010

Это невозможно.

Событие, если оно было возможным, представьте, что у вас есть переключатель автоматически с делами - как бы вы определили, что делать в каждом из cases?

Редактировать:
Вам нужно просто иметь возможность проверить, является ли выбор одной из строк в списке.Таким образом, вам нужно (1) добавить все ваши строки в HashSet, (2) ваш код будет выглядеть так:

HashSet hashset = new HashSet();
using (var file = new StreamReader(path))
{
    string line;
    while ((line = file.ReadLine()) != null)
        hashset.Add(line);
}
// ...

if (hashset.Contains(selection))
{
    i = (int)Choice.GoodChoice;
    Console.WriteLine("You chose " + selection + " radio!");
}
else
{
    switch (selection)
    {
    case "!exit":
    case "!!":
        i = (int)Choice.ExitChoice;
        break;
    case "!info":
        TitleScreen();
        Console.ForegroundColor = ConsoleColor.Green;
        break;
    default:
        Console.WriteLine("Invalid selection! Please try again!");
        break;
    }
}
...