Η switch
δήλωση στην C# είναι ένα σημαντικό εργαλείο που επιτρέπει την εκτέλεση διαφορετικών τμημάτων κώδικα βάσει της τιμής μιας μεταβλητής ή μιας έκφρασης. Αυτό την καθιστά μια πιο καθαρή και οργανωμένη εναλλακτική λύση στις πολλαπλές if-else if
δηλώσεις. Ας δούμε πιο αναλυτικά τη switch
δήλωση, τη σύνταξη της και παραδείγματα χρήσης.
Σύνταξη
Η βασική σύνταξη μιας switch
δήλωσης είναι η εξής:
switch (expression)
{
case value1:
// Κώδικας που εκτελείται αν το expression είναι ίσο με value1
break;
case value2:
// Κώδικας που εκτελείται αν το expression είναι ίσο με value2
break;
// Μπορούν να υπάρχουν και άλλες περιπτώσεις (cases)
default:
// Κώδικας που εκτελείται αν καμία από τις προηγούμενες περιπτώσεις δεν είναι αληθής
break;
}
Ανάλυση Σύνταξης
default:
Προαιρετική, αλλά συνιστάται να χρησιμοποιείται. Αυτή η περίπτωση εκτελείται αν καμία από τις προηγούμενες περιπτώσεις δεν είναι αληθής.
switch (expression)
: Η έκφραση που αξιολογείται. Μπορεί να είναι μια μεταβλητή ή μια υπολογιζόμενη τιμή.
case value:
Καθεμία από αυτές τις γραμμές ελέγχει αν η έκφραση ισούται με το value
. Αν ναι, εκτελείται ο κώδικας που ακολουθεί.
break;
Χρησιμοποιείται για να τερματίσει την εκτέλεση του τρέχοντος μπλοκ case
. Αν παραλειφθεί, η εκτέλεση θα συνεχίσει στην επόμενη περίπτωση (fall-through).
Παράδειγμα Χρήσης
Ας δούμε ένα απλό παράδειγμα χρήσης της switch
δήλωσης για να καθορίσουμε την ημέρα της εβδομάδας:
using System;
class Program
{
static void Main()
{
int day = 3;
switch (day)
{
case 1:
Console.WriteLine(“Monday”);
break;
case 2:
Console.WriteLine(“Tuesday”);
break;
case 3:
Console.WriteLine(“Wednesday”);
break;
case 4:
Console.WriteLine(“Thursday”);
break;
case 5:
Console.WriteLine(“Friday”);
break;
case 6:
Console.WriteLine(“Saturday”);
break;
case 7:
Console.WriteLine(“Sunday”);
break;
default:
Console.WriteLine(“Invalid day”);
break;
}
}
}
Σημαντικά Σημεία
Έκφραση: Η έκφραση που αξιολογείται στο switch
πρέπει να είναι τύπου int
, char
, string
, enum
, ή άλλος τύπος που μπορεί να συγκριθεί με τον τελεστή ==
.
break
: Αν δεν χρησιμοποιηθεί, η εκτέλεση θα συνεχίσει στην επόμενη case
, κάτι που μπορεί να οδηγήσει σε απρόσμενη συμπεριφορά. Αυτό ονομάζεται “fall-through”.
default
: Η περίπτωση default
είναι χρήσιμη για την αντιμετώπιση όλων των τιμών που δεν έχουν καθοριστεί σε κάποιο case
.
Χρήση String στην Switch
Η switch
δήλωση υποστηρίζει τη χρήση string
τιμών από την έκδοση C# 7.0 και μετά:
using System;
class Program
{
static void Main()
{
string fruit = "Apple";
switch (fruit)
{
case "Apple":
Console.WriteLine("It's an apple.");
break;
case "Banana":
Console.WriteLine("It's a banana.");
break;
default:
Console.WriteLine("Unknown fruit.");
break;
}
}
}
switch
με Εκφράσεις (C# 8.0 και μετά)
Η C# 8.0 εισήγαγε τη δυνατότητα χρήσης switch
με εκφράσεις, που επιτρέπει πιο συμπυκνωμένο και εκφραστικό κώδικα:
using System;
class Program
{
static void Main()
{
int number = 3;
string result = number switch
{
1 => “One”,
2 => “Two”,
3 => “Three”,
_ => “Unknown number”
};
Console.WriteLine(result);
}
}
Συνοψίζοντας
Η switch
δήλωση είναι ένα ισχυρό εργαλείο για την επιλογή μεταξύ πολλαπλών διαδρομών εκτέλεσης. Είναι ιδανική για περιπτώσεις όπου υπάρχουν πολλές διακριτές τιμές που πρέπει να ελεγχθούν, και βελτιώνει την αναγνωσιμότητα του κώδικα σε σύγκριση με τα πολλαπλά if-else if
statements. Με την προσθήκη της υποστήριξης για string
και switch
εκφράσεις, η C# καθιστά την switch
δήλωση ακόμη πιο ευέλικτη και εκφραστική.