Sono interessato a considerazioni di stile e prestazioni. La mia scelta è di fare una delle seguenti (mi dispiace per il povero formattazione ma l'interfaccia di questo sito non è WYSIWYG):Istruzione switch C# .NET stringa confronto vs enum confronta
One:
string value = "ALPHA";
switch (value.ToUpper())
{
case "ALPHA":
// do somthing
break;
case "BETA":
// do something else
break;
default:
break;
}
Due:
public enum GreekLetters
{
UNKNOWN= 0,
ALPHA= 1,
BETA = 2,
etc...
}
string value = "Alpha";
GreekLetters letter = (GreekLetters)Enum.Parse(typeof(GreekLetters), value.ToUpper());
switch(letter)
{
case GreekLetters.ALPHA:
// do something
break;
case GreekLetters.BETA:
// do something else
break;
default:
break;
}
Personalmente, Preferisco l'opzione DUE di seguito, ma non ho alcun motivo reale se non per motivi di stile di base. Tuttavia, non sono nemmeno sicuro che ci sia davvero una ragione di stile. Grazie per il tuo contributo.
Sarebbe un'ottima domanda per il colloquio - suggerirei che lo avreste sicuramente verificato con il profiling, in quanto dipenderebbe dalle prestazioni di 'Enum.Parse()' - ovviamente, opzione due sono più facili da mantenere da una prospettiva di errore, anche se le prestazioni sono paragonabili ... –
+1 per contrassegnare il valore enum di 0 come "sconosciuto". –