Nein, es gibt keine Möglichkeit, es im Allgemeinen zu vermeiden. Sie können einen statischen Analysator warnen lassen, aber es löst nicht das zugrunde liegende Problem, dass eine Aufzählung nur eine Zahl ist und als solche den Wert 123 haben kann. Üblicherweise wird es den Wert Null haben (wenn Sie es zum Beispiel neu eingeben, oder weise es nicht zu).
das Problem deutlicher zu sehen, betrachten Sie dieses:
var colors = new Color[100];
Was colors[0]
jetzt ist? Es ist null, wie jede nicht initialisierte Nummer. Eine Enumeration ermöglicht es Ihnen also, Werte zu benennen - das garantiert nicht, dass Variablen des Typs einen dieser benannten Werte verwenden.
Eine gute Best Practice besteht darin, in Ihrer Enumeration immer einen Namen-Wert für Null zu haben (normalerweise würde es in diesem Fall "None", "Uninitialized", "NotSet" oder Ähnliches heißen). Sobald Sie das haben, werden die nicht initialisierten Werte sinnvoll sein.
'var color = (Farbe) 125;' ist auch vollkommen legal. Sie müssen manuell überprüfen, ob der Wert gültig ist, wenn Sie die Aufzählungsvariable ... – Haukinger
lesen. Siehe https://msdn.microsoft.com/en-us/library/ms182149.aspx Warum müssen Sie einem non-Wert Werte zuweisen? Flagge enum? – PaulF
0 ist der Standardwert für jeden Werttyp, unabhängig davon, ob er gültig ist oder nicht und kann nicht geändert werden. Wofür benutzt du die enum? Vielleicht könnten wir, wenn wir mehr Kontext hätten, eine Alternative vorschlagen. – Equalsk