Η δήλωση switch (switch statement) χρησιμοποιείται για να επιλέξει έναν από πολλούς κώδικες που θα εκτελεστούν. Σας επιτρέπει να εκτελέσετε διαφορετικό κώδικα ανάλογα με την τιμή μιας μεταβλητής ή μια έκφραση.
Η σύνταξη της δήλωσης switch είναι η εξής:
switch (expression) { case value1: // Κώδικας που εκτελείται αν η expression έχει την τιμή value1 break; case value2: // Κώδικας που εκτελείται αν η expression έχει την τιμή value2 break; case value3: // Κώδικας που εκτελείται αν η expression έχει την τιμή value3 break; default: // Κώδικας που εκτελείται αν η expression δεν ταιριάζει με καμία από τις παραπάνω τιμές break; }
Η expression
είναι η μεταβλητή ή η έκφραση που ελέγχεται. Αν η τιμή της expression
ταιριάζει με μία από τις τιμές των case
, τότε εκτελείται ο αντίστοιχος κώδικας μέσα στο αντίστοιχο μπλοκ case
. Η δήλωση break
χρησιμοποιείται για να τερματίσει την εκτέλεση του κώδικα του κάθε case
. Αν η τιμή της expression
δεν ταιριάζει με καμία από τις τιμές των case
, τότε εκτελείται ο κώδικας μέσα στο μπλοκ default
.
Παράδειγμα:
using System; class Program { static void Main() { int day = 3; // Ορισμός μιας μεταβλητής day και ανάθεση της τιμής 3 switch (day) // Έναρξη δομής switch με βάση τη μεταβλητή day { case 1: // Αν η τιμή της day είναι 1 Console.WriteLine("Δευτέρα"); // Εκτύπωση του κειμένου "Δευτέρα" break; // Έξοδος από τη δομή switch case 2: // Αν η τιμή της day είναι 2 Console.WriteLine("Τρίτη"); // Εκτύπωση του κειμένου "Τρίτη" break; // Έξοδος από τη δομή switch case 3: // Αν η τιμή της day είναι 3 Console.WriteLine("Τετάρτη"); // Εκτύπωση του κειμένου "Τετάρτη" break; // Έξοδος από τη δομή switch case 4: // Αν η τιμή της day είναι 4 Console.WriteLine("Πέμπτη"); // Εκτύπωση του κειμένου "Πέμπτη" break; // Έξοδος από τη δομή switch case 5: // Αν η τιμή της day είναι 5 Console.WriteLine("Παρασκευή"); // Εκτύπωση του κειμένου "Παρασκευή" break; // Έξοδος από τη δομή switch default: // Αν η τιμή της day δεν αντιστοιχεί σε καμία από τις προηγούμενες περιπτώσεις Console.WriteLine("Σαββατοκύριακο"); // Εκτύπωση του κειμένου "Σαββατοκύριακο" break; // Έξοδος από τη δομή switch } } }
[adinserter block=”2″]
Ο παραπάνω κώδικας εκτελεί την ακόλουθη λειτουργία:
- Δημιουργείται μια μεταβλητή
day
και της ανατίθεται η τιμή 3. - Έπειτα, χρησιμοποιείται η δομή επιλογής
switch
για να ελεγχθεί η τιμή της μεταβλητήςday
. - Αν η τιμή της
day
είναι 1, εκτυπώνεται το κείμενο “Δευτέρα”. - Αν η τιμή της
day
είναι 2, εκτυπώνεται το κείμενο “Τρίτη”. - Αν η τιμή της
day
είναι 3, εκτυπώνεται το κείμενο “Τετάρτη”. - Αν η τιμή της
day
είναι 4, εκτυπώνεται το κείμενο “Πέμπτη”. - Αν η τιμή της
day
είναι 5, εκτυπώνεται το κείμενο “Παρασκευή”. - Αν η τιμή της
day
δεν αντιστοιχεί σε καμία από τις προηγούμενες περιπτώσεις, εκτυπώνεται το κείμενο “Σαββατοκύριακο”. - Η εκτέλεση του προγράμματος ολοκληρώνεται.
Έτσι, ο κώδικας ελέγχει την τιμή της μεταβλητής day
και εκτυπώνει την αντίστοιχη ημέρα της εβδομάδας στην οθόνη, με βάση την τιμή που έχει ανατεθεί στην day
. Στο παράδειγμα, θα εκτυπωθεί το κείμενο “Τετάρτη”.
Η δήλωση switch είναι χρήσιμη όταν έχουμε πολλαπλές περιπτώσεις και θέλουμε να εκτελέσουμε διαφορετικό κώδικα ανάλογα με την τιμή μιας μεταβλητής ή μια έκφραση.
Όταν η γλώσσα C# φτάνει σε μια δήλωση break
, διακόπτει την εκτέλεση του block switch
.
Αυτό έχει ως αποτέλεσμα τη διακοπή της εκτέλεσης επιπλέον κώδικα και των δοκιμών case μέσα στο block.
Όταν βρεθεί μια αντιστοιχία (match) και ολοκληρωθεί η εργασία, είναι καιρός για μια δήλωση break
. Δεν υπάρχει ανάγκη για περισσότερες δοκιμές.
Η λέξη-κλειδί default
είναι προαιρετική και καθορίζει κάποιον κώδικα που θα εκτελεστεί αν δεν υπάρχει αντιστοιχία (match) στα case
:
Όταν η γλώσσα C# δεν βρίσκει καμία αντιστοιχία (match) στα case
εντός της δήλωσης switch
, τότε η εκτέλεση μεταφέρεται στο μπλοκ default
, αν υπάρχει. Ο κώδικας μέσα στο μπλοκ default
εκτελείται και μπορεί να περιλαμβάνει τις απαραίτητες ενέργειες που θέλουμε να πραγματοποιήσουμε σε αυτήν την περίπτωση.
Παράδειγμα:
using System; class Program { static void Main() { int day = 7; // Χρησιμοποιούμε την εντολή switch για να ελέγξουμε την τιμή της μεταβλητής day switch (day) { case 1: Console.WriteLine("Δευτέρα"); break; case 2: Console.WriteLine("Τρίτη"); break; case 3: Console.WriteLine("Τετάρτη"); break; case 4: Console.WriteLine("Πέμπτη"); break; case 5: Console.WriteLine("Παρασκευή"); break; default: Console.WriteLine("Μη έγκυρη ημέρα"); break; } } }
Ο παραπάνω κώδικας ελέγχει την τιμή της μεταβλητής day
και εκτελεί διάφορες ενέργειες ανάλογα με την τιμή αυτή. Ακολουθεί μια περιγραφή των βήματων που πραγματοποιούνται:
- Αρχικά, ορίζεται η μεταβλητή
day
και της ανατίθεται η τιμή 7. - Στη συνέχεια, χρησιμοποιείται η εντολή
switch
για να ελεγχθεί η τιμή της μεταβλητήςday
. - Έχουμε πέντε πιθανές περιπτώσεις (
case
) για τις τιμές 1, 2, 3, 4 και 5, που αντιστοιχούν στις καθημερινές της εβδομάδας. - Αν η τιμή της
day
ταιριάζει με ένα από ταcase
, τότε εκτελείται η αντίστοιχη εντολή εκτύπωσης με τη χρήση τηςConsole.WriteLine()
. Για παράδειγμα, αν η τιμή τηςday
είναι 1, θα εκτυπωθεί το μήνυμα “Δευτέρα”. - Αν η τιμή της
day
δεν ταιριάζει με κανένα από ταcase
, τότε εκτελείται η εντολήdefault
, η οποία εκτυπώνει το μήνυμα “Μη έγκυρη ημέρα”.
Συνολικά, ο κώδικας αυτός εκτυπώνει την ημέρα της εβδομάδας ανάλογα με την τιμή της μεταβλητής day
, ή εκτυπώνει ένα μήνυμα για μη έγκυρη ημέρα αν η τιμή της day
δεν αντιστοιχεί σε καμία από τις καθημερινές της εβδομάδας.
Όταν εκτελέσετε τον παραπάνω κώδικα, αν η τιμή της μεταβλητής day
είναι 7, τότε θα εμφανιστεί το ακόλουθο αποτέλεσμα:
Μη έγκυρη ημέρα
Αυτό συμβαίνει διότι η τιμή 7 της μεταβλητής day
δεν αντιστοιχεί σε καμία από τις περιπτώσεις (case
) που ορίστηκαν στην switch
δομή. Έτσι, εκτελείται η εντολή default
, η οποία εκτυπώνει το μήνυμα “Μη έγκυρη ημέρα”.
Σημείωση: Η δήλωση default
μπορεί να είναι παρούσα σε μια δήλωση switch
, αλλά δεν είναι υποχρεωτική. Εάν δεν παρέχεται κάποια δήλωση default
και δεν υπάρχει αντιστοιχία με κανένα case
, τότε η εκτέλεση του switch
θα προχωρήσει στο επόμενο κομμάτι κώδικα μετά το switch
.