Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| Eigenschaft | Wert |
|---|---|
| Regel-ID | CA1069 |
| Titel | Enumerationen sollten keine doppelten Werte haben. |
| Kategorie | Design |
| Fix führt zu Unterbrechungen oder bleibt funktionsfähig | Eilmeldung |
| Standardmäßig in .NET 10 aktiviert | Als Vorschlag |
| Anwendbare Sprachen | C# und Visual Basic |
Ursache
Eine Enumeration verfügt über mehrere Member, denen explizit derselbe Konstantwert zugewiesen wird.
Regelbeschreibung
Jedes Enum-Mitglied sollte entweder einen eindeutigen Konstantenwert haben oder explizit einem vorherigen Enum-Mitglied zugewiesen werden, um die ausdrückliche Absicht des Teilens eines Wertes anzuzeigen. Beispiel:
enum E
{
Field1 = 1,
AnotherNameForField1 = Field1, // This is fine
Field2 = 2,
Field3 = 2, // CA1069: This is not fine. Either assign a different constant value or 'Field2' to indicate explicit intent of sharing value.
}
Diese Regel hilft beim Erfassen funktionaler Fehler, die aufgrund der folgenden Szenarien entstanden sind:
- Versehentliche Tippfehler, bei denen der Benutzer versehentlich denselben Konstantwert für mehrere Member eingegeben hat.
- Copy-Paste-Fehler, bei denen der Benutzer eine vorhandene Memberdefinition kopiert und den Member umbenannt hat, danach aber vergessen hat, den Wert zu ändern.
- Das Zusammenführen von Auflösungen aus mehreren Verzweigungen, bei denen in verschiedenen Verzweigungen ein neues Mitglied mit einem anderen Namen, aber demselben Wert hinzugefügt wurde.
So beheben Sie Verstöße
Um einen Verstoß zu beheben, weisen Sie dem Member entweder einen neuen eindeutigen Konstantwert zu, oder ordnen Sie ihn einem früheren Enumerationsmember zu, um die explizite Absicht zu verdeutlichen, denselben Wert zu teilen. Der folgende Codeausschnitt zeigt beispielsweise einen Verstoß gegen die Regel und mehrere Korrekturmöglichkeiten:
enum E
{
Field1 = 1,
AnotherNameForField1 = Field1, // This is fine
Field2 = 2,
Field3 = 2, // CA1069: This is not fine. Either assign a different constant value or 'Field2' to indicate explicit intent of sharing value.
}
enum E
{
Field1 = 1,
AnotherNameForField1 = Field1, // This is fine
Field2 = 2,
Field3 = 3, // This is now fine
}
enum E
{
Field1 = 1,
AnotherNameForField1 = Field1, // This is fine
Field2 = 2,
Field3 = Field2, // This is also fine
}
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie die Verstöße gegen diese Regel nicht.