2010-11-10 60 views
0

我設置了一個菜單系統,用戶被要求從列表中選擇一個廣播電臺,並且爲了便於在路上使用,我希望該列表位於名爲StationList的文件中。該位全部排序,但我在選擇過程中遇到問題。在C#/ Mono的switch case語句中引用文件內容?

有沒有辦法有一個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; 
} 
+3

你能提供關於你想在case語句到底該怎麼做一些更多的信息? – LukeH 2010-11-10 00:31:40

+0

已經添加了一些代碼:希望它大致說明了我正在嘗試做什麼。 '選擇'是用戶輸入的數據...在問過這個問題後,似乎最好的辦法就是讓case語句循環與'i'在每個循環中變化...似乎有點浪費雖然... – 2010-11-10 00:38:25

回答

1

這是不可能的。

事件如果它可能的情況下,想象你有自動切換案例 - 你將如何定義在每個case s中做什麼?

編輯:
您只需要能夠檢查選擇是否是列表中的一個字符串。因此,你需要基本(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; 
    } 
} 
+0

是的,我明白你的觀點。謝謝弗拉德,我會嘗試一種不同的方式。 – 2010-11-10 00:42:57

+0

@Cyber​​dog:不客氣! – Vlad 2010-11-10 00:53:20