Confronto tra if e switch
Fa parte della sezione Logica e flusso del percorso C# di Coddy. Lezione 10 di 66.
C# offre due modi principali per gestire più condizioni: le istruzioni if-else e le istruzioni switch. Ognuna ha i suoi punti di forza in scenari diversi.
Le istruzioni if-else sono flessibili e possono gestire qualsiasi tipo di condizione:
string grade = "B";
if (grade == "A")
{
Console.WriteLine("Excellent");
}
else if (grade == "B")
{
Console.WriteLine("Good");
}
else if (grade == "C")
{
Console.WriteLine("Satisfactory");
}
else
{
Console.WriteLine("Needs improvement");
}Le istruzioni switch sono più ordinate quando si confronta una singola variabile con più valori costanti:
string grade = "B";
switch (grade)
{
case "A":
Console.WriteLine("Excellent");
break;
case "B":
Console.WriteLine("Good");
break;
case "C":
Console.WriteLine("Satisfactory");
break;
default:
Console.WriteLine("Needs improvement");
break;
}Switch può raggruppare più casi insieme (fall-through), in modo che condividano lo stesso risultato. Disponi le etichette dei casi una dopo l’altra senza codice tra di loro e inserisci un solo break alla fine:
string grade = "B";
switch (grade)
{
case "A":
case "a":
Console.WriteLine("Excellent - 4 points");
break;
case "B":
case "b":
Console.WriteLine("Good - 3 points");
break;
case "C":
case "c":
Console.WriteLine("Satisfactory - 2 points");
break;
default:
Console.WriteLine("Needs improvement");
break;
}Qui, sia "B" sia "b" confluiscono nello stesso blocco e stampano "Good - 3 points". Questo schema è utile ogni volta che vuoi che gli input in maiuscolo e in minuscolo, o qualsiasi insieme di valori, producano lo stesso risultato.
Switch può anche raggruppare casi con etichette diverse che condividono lo stesso risultato:
char dayCode = 'M';
switch (dayCode)
{
case 'M':
Console.WriteLine("Monday");
break;
case 'T':
Console.WriteLine("Tuesday or Thursday");
break;
case 'W':
Console.WriteLine("Wednesday");
break;
case 'F':
Console.WriteLine("Friday");
break;
default:
Console.WriteLine("Unknown day");
break;
}Sfida
MedioCrea un metodo chiamato convertGradeToPoints che:
- Accetta un voto in lettere come parametro di tipo stringa
- Lo converte in un punteggio numerico usando sia l'approccio switch sia quello if-else
- Il metodo deve implementare entrambi gli approcci e restituire il risultato dell'implementazione switch
- Usa queste conversioni dei voti:
- "A" o "a" = 4
- "B" o "b" = 3
- "C" o "c" = 2
- "D" o "d" = 1
- "F" o "f" = 0
- Qualsiasi altro input = -1
Provalo tu
public class ConvertGradeToPoints
{
// Implementa il metodo convertGradeToPoints
public static int convertGradeToPoints(string letterGrade)
{
// Scrivi il tuo codice qui
}
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Array multidimensionali
Fondamenti degli array 2DDichiarare e inizializzare array 2DAccedere agli elementi di un array 2DCicli annidati con array 2DArray irregolariOperazioni comuni sulle matriciRipasso: array multidimensionali4Tecniche di controllo del flusso
Uscite anticipateClausole di guardiaIstruzioni di salto (goto)Break e continueAppiattire le condizioni annidate2Decisioni avanzate
Condizioni multipleLogica booleana complessaConfronto tra if e switchIstruzioni switch annidateRiepilogo - decisioni avanzate5Gestione delle eccezioni
Nozioni di base su try-catchTipi di eccezioneBlocchi catch multipliLavorare con i fileBlocco finallyUsing vs. try-finallyEccezioni personalizzateRiepilogo - gestione degli errori3Miglioramenti dei cicli
Prestazioni dei cicliIterare strutture complesseOgni tipo di cicloRifattorizzare i cicliRiepilogo - Cicli ottimizzati6Gestione dei valori null
Fondamenti dei riferimenti nullTipi valore nullableSchemi di controllo dei valori nullProgrammazione difensivaRiepilogo: sicurezza rispetto ai valori nullEsercitati da solo: Compilatore C# online