Αναγνώστες σαν εσάς βοηθούν στην υποστήριξη του MUO. Όταν κάνετε μια αγορά χρησιμοποιώντας συνδέσμους στον ιστότοπό μας, ενδέχεται να κερδίσουμε μια προμήθεια θυγατρικών. Διαβάστε περισσότερα.

Τα Enums είναι ένας χρήσιμος τύπος δεδομένων που σας επιτρέπει να ορίσετε μια λίστα με επώνυμες επιλογές για μια μεταβλητή. Για παράδειγμα, εάν θέλετε να αποθηκεύετε κάθε μέρα της εβδομάδας, μπορείτε να χρησιμοποιήσετε ένα enum για να αντιπροσωπεύσετε τις έγκυρες τιμές.

Τα Enum διευκολύνουν την ανάγνωση και τη γραφή του κώδικά σας, ενθαρρύνοντας ονόματα με νόημα και περιορίζοντας τις τιμές που μπορείτε να χρησιμοποιήσετε. Είναι συχνά βολικό να χρησιμοποιείτε μια δήλωση διακόπτη για να χειριστείτε τις πιθανές τιμές ενός enum.

Μπορείτε να δηλώσετε και να χρησιμοποιήσετε enums σε πολλές γλώσσες προγραμματισμού, συμπεριλαμβανομένης της C#.

Πώς να δηλώσετε ένα Enum σε C#

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

instagram viewer
τάξηΠρόγραμμα
{
αρίθμηση Καθημερινή {
Δευτέρα,
Τρίτη,
Τετάρτη,
Πέμπτη,
Παρασκευή,
Σάββατο,
Κυριακή
}

στατικόςκενόςΚύριος(σειρά[] args)
{

}
}

Όταν δηλώνετε ένα enum, κάθε επιλογή λαμβάνει μια ακέραια τιμή που αντιπροσωπεύει το ευρετήριό της. Από προεπιλογή, η πρώτη τιμή στο enum έχει τιμή ευρετηρίου 0. Για να το αλλάξετε αυτό, μπορείτε να καθορίσετε το δικό σας ευρετήριο για το πρώτο στοιχείο όταν δηλώνετε το enum:

αρίθμηση Καθημερινή { 
Δευτέρα = 1,
Τρίτη,
Τετάρτη,
Πέμπτη,
Παρασκευή,
Σάββατο,
Κυριακή
}

Σε αυτή την περίπτωση, ο δείκτης του πρώτου στοιχείου Δευτέρα αρχίζει στις 1. Ο δείκτης του επόμενου στοιχείου Τρίτη θα είναι 2, και ούτω καθεξής.

Πώς να αποκτήσετε πρόσβαση σε μια τιμή Enum στο C#

Υπάρχουν πολλοί διαφορετικοί τρόποι με τους οποίους μπορείτε να αποκτήσετε πρόσβαση στις τιμές που είναι αποθηκευμένες στα enums. Η τιμή που επιστρέφεται για κάθε επιλογή στο enum είναι το ευρετήριο. Για αυτό το παράδειγμα, η τιμή του Καθημερινή. Παρασκευή είναι 5.

Ένας τρόπος για να ανακτήσετε το όνομα του enum είναι χρησιμοποιώντας το Αριθμοί. GetName() λειτουργία. Αυτό παίρνει το όνομα της επιλογής στο ευρετήριο 5:

σειρά Παρασκευή = Αριθμ. GetName(του είδους(Εβδομαδιαία), Καθημερινή. Παρασκευή);
Κονσόλα. WriteLine(«Δόξα τω Θεώ είναι» + Παρασκευή + "!");
// Έξοδος = Δόξα τω Θεώ είναι Παρασκευή!

Μπορείτε επίσης να αποκτήσετε πρόσβαση σε μια τιμή χρησιμοποιώντας το ευρετήριό της. Σε αυτήν την περίπτωση, η τιμή στο δείκτη 2 στο πλήθος των ημερών της εβδομάδας (που είναι Τρίτη) θα αποθηκευτεί στη μεταβλητή:

Εβδομαδιαία Τρίτη = (Εβδομάδα)2;
Κονσόλα. WriteLine("Σήμερα είναι " + Τρίτη)·
// Έξοδος = Σήμερα είναι Τρίτη

Όταν περνάτε ένα enum ως όρισμα Κονσόλα. WriteLine(), ο toString() η μέθοδος για το enum εκτελείται αυτόματα. Αυτό σημαίνει ότι αντί να εκτυπωθεί η πραγματική αριθμητική τιμή του enum, που είναι 5, θα εκτυπώσει την τιμή συμβολοσειράς, Παρασκευή.

Κονσόλα. WriteLine (Εβδομαδιαία. Πέμπτη + "είναι το νέο" + Καθημερινή. Παρασκευή);
// Έξοδος = Πέμπτη είναι η νέα Παρασκευή

Μπορείτε επίσης να μετατροπή ή ανάλυση του τύπου δεδομένων σε έναν ακέραιο ως έναν άλλο τρόπο αποθήκευσης του ευρετηρίου μιας επιλογής:

ενθ Δευτέρα Ευρετήριο = (ενθ)Καθημερινή. Δευτέρα;
Κονσόλα. WriteLine (mondayIndex);
// Έξοδος = 1

Πώς να συγκρίνετε τα Enums σε C#

Στη C#, μπορείτε να συγκρίνετε enum χρησιμοποιώντας τους τελεστές σύγκρισης (==, !=, , <=, >=). Αυτό θα συγκρίνει την αριθμητική αξία των επιλογών.

Weekday day1 = Weekday. Δευτέρα;
Weekday day2 = Weekday. Τρίτη;

αν (ημέρα 1 == ημέρα 2)
{
Κονσόλα. WriteLine(«Οι μέρες είναι ίδιες».);
}
αλλού
{
Κονσόλα. WriteLine(«Οι μέρες είναι διαφορετικές».);
}

Σε αυτό το παράδειγμα, η τιμή του Weekday. Η Δευτέρα είναι 1 και η τιμή της εβδομάδας. Τρίτη είναι 2, οπότε το 1 == 2 η σύγκριση θα αποτύχει.

Ένας άλλος τρόπος σύγκρισης των αριθμών είναι το Equals() μέθοδος:

αν (ημέρα 1. Ίσο (ημέρα 2))
{
Κονσόλα. WriteLine(«Οι μέρες είναι ίδιες».);
}
αλλού
{
Κονσόλα. WriteLine(«Οι μέρες είναι διαφορετικές».);
}

Μπορείτε επίσης να χρησιμοποιήστε μια δήλωση διακόπτη C# για να συγκρίνετε μια τιμή με κάθε επιλογή σε έναν αριθμό. Σε αυτό το παράδειγμα, ο κωδικός θα εμπίπτει στην περίπτωση Τετάρτης:

Weekday valueToCompare = Καθημερινή. Τετάρτη;

διακόπτης (τιμήΣύγκριση)
{
υπόθεση Καθημερινή. Δευτέρα:
Κονσόλα. WriteLine("Χρειάζομαι καφέ.");
Διακοπή;
υπόθεση Καθημερινή. Τρίτη:
Κονσόλα. WriteLine("Χρειάζομαι καφέ.");
Διακοπή;
υπόθεση Καθημερινή. Τετάρτη:
Κονσόλα. WriteLine("Χρειάζομαι καφέ.");
Διακοπή;
υπόθεση Καθημερινή. Πέμπτη:
Κονσόλα. WriteLine("Πέμπτη είναι η νέα Παρασκευή!");
Διακοπή;
υπόθεση Καθημερινή. Παρασκευή:
Κονσόλα. WriteLine("Δόξα τω Θεώ Είναι Παρασκευή!");
Διακοπή;
υπόθεση Καθημερινή. Σάββατο:
Κονσόλα. WriteLine("Η αγαπημένη μου μέρα!");
Διακοπή;
υπόθεση Καθημερινή. Κυριακή:
Κονσόλα. WriteLine("Η άλλη αγαπημένη μου μέρα!");
Διακοπή;
Προκαθορισμένο:
Κονσόλα. WriteLine("Μη έγκυρη ημέρα της εβδομάδας.");
Διακοπή;
}

Πώς να επαναλάβετε τα Enums στο C#

Μπορείτε να επαναλάβετε τους αριθμούς σε C# χρησιμοποιώντας το Enum. GetValues() μέθοδος, η οποία επιστρέφει έναν πίνακα με όλες τις τιμές στο enum. Αυτό το απόσπασμα κώδικα εκτυπώνεται κάθε μέρα της εβδομάδας, συμπεριλαμβανομένων της Δευτέρας, της Τρίτης και ούτω καθεξής:

για κάθε (Ημέρα της εβδομάδας σε Enum. GetValues(του είδους(Καθημερινή)))
{
Κονσόλα. WriteLine((ενθ)ημέρα); // Για να εκτυπώσετε το ευρετήριο
Κονσόλα. WriteLine (ημέρα); // Για να εκτυπώσετε την τιμή κειμένου
}

Μπορείτε επίσης να επαναλάβετε τις τιμές enum χρησιμοποιώντας το Enum. GetNames() μέθοδος. Επιστρέφει μια λίστα τιμών συμβολοσειρών για να αναπαραστήσει τα ονόματα για τις επιλογές enum:

για κάθε (σειρά όνομα σε Enum. GetNames(του είδους(Καθημερινή)))
{
ενθ ευρετήριο = (ενθ)(Εβδομαδιαία) Αριθμ. Αναλύω λέξη(του είδους(Εβδομαδιαία), όνομα).

Κονσόλα. WriteLine (ευρετήριο); // Για να εκτυπώσετε το ευρετήριο
Κονσόλα. WriteLine (όνομα); // Για να εκτυπώσετε την τιμή κειμένου
}

Χρήση Enums σε C#

Μπορείτε να χρησιμοποιήσετε enum στον κώδικά σας για να τον κάνετε πιο ευανάγνωστο και λιγότερο επιρρεπή σε σφάλματα. Τα Enums μπορούν επίσης να είναι πολύ χρήσιμα όταν συνδυάζονται με άλλες δομές, όπως λεξικά.