Διαδρομές
/
C#
C#
/
Ύλη
/
Εντολές `switch`
Εν

Εντολές `switch` σε C#

2 ασκήσεις

Σχετικά με την έννοια Εντολές `switch`

Οι εντολές switch έχουν μια μακρόχρονη ιστορία στις γλώσσες προγραμματισμού. Εισήχθησαν στη C, όπου εκτιμήθηκαν ιδιαίτερα για την ταχύτητά τους. Αυτή η ταχύτητα είχε ως τίμημα τη λειτουργικότητα, η οποία ήταν πολύ περιορισμένη. Στη C#, ο ρόλος της εντολής switch έχει επεκταθεί πέρα από τους ακέραιους αριθμούς. Οι εντολές switch μπορούν να καλύψουν οποιονδήποτε αυθαίρετο τύπο, τιμή ή αναφορά.

Αν έρχεσαι από μια συναρτησιακή γλώσσα, τότε η εργασία με εντολές switch (και τις εκφράσεις switch που συζητούνται αλλού) είναι το πιο κοντινό που θα βρεις στη C# στη χρήση διακριτών ενώσεων και αντιστοίχισης προτύπων. Ωστόσο, δεν έχουν ούτε κατά διάνοια τη δύναμη της διακριτής ένωσης να επιβάλλουν την ασφάλεια τύπων.

Οι απλές εντολές switch θυμίζουν τους προγόνους τους στη C, συνδυάζοντας τα switch, case, break και default.

int direction = GetDirection();
switch (direction)
{
    case 1:
        GoLeft();
        break;
    case 2:
        GoRight();
        break;
    default:
        MarkTime();
        break;
}

Το παραπάνω μοτίβο μπορεί να χρησιμοποιηθεί με οποιονδήποτε απλό τύπο (πρωτόγονα + συμβολοσειρές).

Όταν στο μείγμα προστίθενται τύποι αναφοράς, τότε εμπλέκεται επιπλέον σύνταξη, πρώτα για να γίνει downcast του τύπου και μετά για να προστεθούν φρουροί (when), αν και οι φρουροί μπορούν να χρησιμοποιηθούν και με απλές περιπτώσεις τιμών. Αυτό φαίνεται παρακάτω:

Animal animal = GetAnimal();

switch(animal)
{
    case Dog canine:
    case Coyote canine:
        canine.Bark();
        break;
    case Cat cat when cat.HasOnly8Lives():
        cat.IsCareful();
        cat.Meow();
        break;
    case Cat cat:
        cat.Meow();
        break;
}
  • Η ρήτρα default είναι προαιρετική αλλά συνήθως επιθυμητή.
  • Η εντολή break είναι υποχρεωτική για κάθε μη κενή ρήτρα case.
  • Προφανώς, ο τύπος όλων των ορισμάτων στις ετικέτες case πρέπει να προκύπτει από τον τύπο του ορίσματος του switch. Ένα όρισμα switch τύπου Object προφανώς επιτρέπει το μεγαλύτερο εύρος.
  • Η έκφραση φρουρού μπορεί να περιλαμβάνει οτιδήποτε βρίσκεται σε εμβέλεια, όχι μόνο μέλη του ορίσματος του case.
  • Πολλαπλά case με διαφορετικά ορίσματα case μπορούν να αναφέρονται στο ίδιο μπλοκ κώδικα.

Η τεκμηρίωση της εντολής switch παρέχει μια εισαγωγή στις εντολές switch.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα

Μάθε την έννοια Εντολές `switch`

Η εξάσκηση είναι κλειδωμένη

Ξεκλείδωσε 6 ακόμη ασκήσεις για να εξασκηθείς στην έννοια Εντολές `switch`