Un sacco di lavoro sembra essere stato messo nel trovare modi per ottenere una delle sintassi meno utilizzate in C # per apparire in qualche modo migliore o funzionare meglio. Personalmente trovo che raramente valga la pena usare l'istruzione switch. Consiglio vivamente di analizzare quali dati stai testando e i risultati finali che desideri.
Diciamo ad esempio che vuoi testare rapidamente i valori in un intervallo noto per vedere se sono numeri primi. Vuoi evitare che il tuo codice esegua i calcoli inutili e puoi trovare un elenco di numeri primi nell'intervallo che desideri online. È possibile utilizzare un'enorme istruzione switch per confrontare ciascun valore con numeri primi noti.
Oppure potresti semplicemente creare una mappa di array di numeri primi e ottenere risultati immediati:
bool[] Primes = new bool[] {
false, false, true, true, false, true, false,
true, false, false, false, true, false, true,
false,false,false,true,false,true,false};
private void button1_Click(object sender, EventArgs e) {
int Value = Convert.ToInt32(textBox1.Text);
if ((Value >= 0) && (Value < Primes.Length)) {
bool IsPrime = Primes[Value];
textBox2.Text = IsPrime.ToString();
}
}
Forse vuoi vedere se un carattere in una stringa è esadecimale. È possibile utilizzare un'istruzione switch ungly e piuttosto grande.
Oppure puoi utilizzare le espressioni regolari per testare il carattere o utilizzare la funzione IndexOf per cercare il carattere in una stringa di lettere esadecimali note:
private void textBox2_TextChanged(object sender, EventArgs e) {
try {
textBox1.Text = ("0123456789ABCDEFGabcdefg".IndexOf(textBox2.Text[0]) >= 0).ToString();
} catch {
}
}
Diciamo che vuoi fare una delle 3 diverse azioni a seconda di un valore che sarà compreso tra 1 e 24. Suggerirei di utilizzare una serie di istruzioni IF. E se questo fosse diventato troppo complesso (o i numeri fossero più grandi, come 5 diverse azioni a seconda di un valore compreso tra 1 e 90), utilizzare un enum per definire le azioni e creare una mappa di array degli enum. Il valore verrebbe quindi utilizzato per indicizzare nella mappa dell'array e ottenere l'enum dell'azione desiderata. Quindi utilizzare un piccolo set di istruzioni IF o un'istruzione switch molto semplice per elaborare il valore enum risultante.
Inoltre, la cosa bella di una mappa di array che converte un intervallo di valori in azioni è che può essere facilmente modificata dal codice. Con il codice cablato non è possibile modificare facilmente il comportamento in fase di esecuzione ma con una mappa di array è facile.