在C#/ Mono的switch case语句中引用文件内容?

时间:2010-11-10 00:26:45

标签: c# mono file-handling case-statement

我正在设置一个菜单系统,要求用户从列表中选择一个广播电台,为了便于使用,我希望该列表位于名为StationList的文件中。这一点都已排序,但我对选择过程有疑问。

有没有办法让case语句参考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 个答案:

答案 0 :(得分:1)

这是不可能的。

如果 可能发生的事件,想象一下您自动切换了案例 - 您将如何定义每个case中的内容?

编辑:
您只需要能够检查选择是否是列表中的一个字符串。所以你基本上需要(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;
    }
}