Was in den anderen Antworten fehlt, ist, dass Aufzählungen einen ganzzahligen Basistyp haben. Sie können die Standardeinstellung von int in einen anderen Integraltyp ändern, außer char wie:
enum LongEnum : long {
foo,
bar,
}
Sie können explizit von und implizit in den Basistyp umwandeln, was in switch-Anweisungen hilfreich ist. Beachten Sie, dass jeder Wert des Basistyps in eine Aufzählung umgewandelt werden kann, auch wenn die Aufzählung kein Mitglied mit dem entsprechenden Wert enthält. Es ist daher eine gute Idee, immer den Standardabschnitt in einem Switch zu verwenden. Übrigens erlaubt .NET selbst sogar Aufzählungen mit Gleitkommawerten, aber Sie können sie nicht in C # definieren, obwohl ich denke, dass Sie sie weiterhin verwenden können (außer in switch).
Darüber hinaus bietet die Verwendung von Aufzählungen mehr Typensicherheit. Wenn Sie beispielsweise int-Konstanten als Methodenparameter verwenden möchten, kann ich die Methode mit einem beliebigen int-Wert aufrufen. Zugegeben, durch Casting kann es auch mit Aufzählungen passieren, aber es wird nicht versehentlich passieren. Schlimmer ist die Möglichkeit, die Reihenfolge der Parameter zu verwechseln.
void method(int a, int b) {...}
Wenn die Konstante A nur in a und die Konstante B nur in b gehen darf, wird durch die Verwendung von zwei verschiedenen Aufzählungstypen ein Missbrauch während der Kompilierung aufgedeckt.