Enums

Τύποι Enums

Ένας τύπος enum (συχνά και enumaration - απαρίθμηση) παρέχει έναν αποτελεσματικό τρόπο για να ορίσουμε ένα σετ από ονοματισμένες σταθερές που μπορούν να ορίσουν τιμή σε μια μεταβλητή. Για παράδειγμα, υποθέστε πως πρέπει να ορίσετε σταθερές οι οποίες θα αντιπροσωπεύουν κάθε μέρα της βδομάδας. Υπάρχουν μόνο 7 τιμές με το αντίστοιχο νόημα όπου κάθε σταθερά θα πρέπει να αποθηκεύσει. Για να ορίσετε αυτές τις τιμές, μπορείτε να χρησιμοποιήσετε enum ως ακολούθως:

enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };

Ως εξ ορισμού, κάθε στοιχείο αντιπροσωπεύεται με τον τύπο int. Μπορείτε να ορίσετε έναν άλλον απαριθμητό τύπο χρησιμοποιώντας άνω και κάτω τελεία. Πχ

enum Months : byte { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
    };

Τα παρακάτω είναι πλεονεκτήματα των enums έναντι των αριθμητικών τύπων:

  • Διευκρινέζετε σαφώς στον κώδικα ποιες τιμές είναι αποδεκτές για μια μεταβλητή
  • Στο visual Studio, η InteliSense απαριθμεί τις ορισμένες τιμές

Όταν δεν ορίζει κανείς τιμές για τα στοιχεία της λίστας στο enum, οι τιμές αυξάνουν αυτόματα κατά ένα. Στο προηγούμενο παράδειγμα, το στοιχείο Days.Sunday έχει τιμή 0, Days.Monday τιμή 1 κλπ.

Στο επόμενο παράδειγμα η μεταβλητή meetingDay είναι τύπου Days, οπότε μπορεί να πάρει τιμές που έχουν οριστεί μόνο στο enum Days. Και αν θέλουμε να αλλάξει αυτή η τιμή, μπορούμε να την αλλάξουμε όπως φαίνεται στο παράδειγμα:

Days meetingDay = Days.Monday;
//...
meetingDay = Days.Friday;

Μπορούμε να ορίσουμε τιμές για τα στοιχεία στο enum και να αφήσουμε τις άλλες να υπολογιστούν ή να μπουν αυτόματα

enum MachineState
{
    PowerOff = 0,
    Running = 5,
    Sleeping = 10,
    Hibernating = Sleeping + 5
}

Επίσης μπορούμε να ορίσουμε μια τιμή σε σταθερά με αυτές που ακολουθούν να παίρνουν πάντα την προηγούμενη τιμή +1

enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};