2010-11-10 33 views
0

Je configure un système de menu dans lequel un utilisateur est invité à choisir une station de radio dans une liste, et pour faciliter l'utilisation sur la route, je veux que cette liste soit dans un fichier appelé StationList. Ce bit est tout trié, mais j'ai un problème avec le processus de sélection.Référencement du contenu d'un fichier dans une instruction de casse-switch en C#/Mono?

Existe-t-il un moyen d'avoir une référence StationList de référence de cas pour des cas valides au lieu de devoir les taper tous manuellement? J'ai regardé autour et il ne semble pas y avoir une réponse immédiate: gardez à l'esprit que je l'ai seulement appris pendant deux semaines :)

Merci d'avance!

Exemple:

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

Pouvez-vous fournir un peu plus d'informations sur exactement ce que vous essayez de faire dans la déclaration de cas ? – LukeH

+0

J'ai ajouté du code: j'espère que cela démontre à peu près ce que j'essaie de faire. 'sélection' est une donnée entrée par l'utilisateur ... ayant posé la question, il semblerait que la meilleure façon de s'y prendre serait d'avoir la boucle de déclaration de cas avec 'i' changeant sur chaque boucle ... cela semble un peu inutile cependant ... –

Répondre

1

Ceci est impossible.

Événement si étaient possible, imaginez que vous ayez votre commutateur avec des cas automatiquement - comment définiriez-vous quoi faire dans chacun des case s?

Editer:
Vous devez juste être en mesure de vérifier si la sélection est l'une des chaînes de la liste. Vous devez donc essentiellement (1) ajouter toutes vos chaînes à une HashSet, (2) votre code sera comme ça:

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

Oui, je vois ce que vous voulez dire. Merci Vlad, je vais essayer d'une autre manière. –

+0

@Cyberdog: de rien! – Vlad