Heim > Backend-Entwicklung > C++ > Warum erlaubt C# nicht eindeutige Enum-Werte und sollte ich stattdessen eine Struktur verwenden?

Warum erlaubt C# nicht eindeutige Enum-Werte und sollte ich stattdessen eine Struktur verwenden?

Patricia Arquette
Freigeben: 2024-12-30 17:56:09
Original
170 Leute haben es durchsucht

Why Does C# Allow Non-Unique Enum Values, and Should I Use a Struct Instead?

Nicht eindeutige Enum-Werte

Frage:

Warum erlaubt der Compiler in C# die Zuweisung mehrerer Enums? auf den gleichen Wert? Ist es in solchen Fällen ratsam, stattdessen eine Struktur zu verwenden?

Antwort:

Eine Enumeration in C# ist im Wesentlichen eine Struktur, die von der System.Enum-Basisklasse erbt. Hinter den Kulissen werden die Enum-Werte als Konstanten innerhalb der Struktur definiert. Beispielsweise die folgende Enum-Definition:

public enum Color
{
    Red = 1,
    Blue = 1,
    Green = 1
}
Nach dem Login kopieren

Entspricht dem folgenden Pseudo-C#-Code:

public struct Color : System.Enum
{
    public const int Red = 1;
    public const int Blue = 1;
    public const int Green = 1;
}
Nach dem Login kopieren

Da es kein Problem mit einem Typ gibt, der mehrere Konstanten mit demselben Wert enthält , ist die Definition von Enumerationen mit nicht eindeutigen Werten zulässig. Es gibt jedoch einige Einschränkungen:

  1. Nicht eindeutige Werte: Bei der Konvertierung in eine Aufzählung mit nicht eindeutigen Werten ist der erste Wert, der der Aufzählung zugewiesen wird, der Eins zurückgegeben. Dies stimmt möglicherweise nicht mit dem beabsichtigten Wert überein.
  2. Gleichheitsvergleiche: Der Vergleich nicht eindeutiger Enum-Werte kann zu unerwarteten Ergebnissen führen. Im Beispiel in der Frage stellen sowohl Rot als auch Grün den Wert 1 dar, sodass ein Vergleich von Rot und Grün trotz ihres inhärenten Unterschieds „true“ zurückgibt.

Während es technisch gesehen legal ist, nicht eindeutige Enum-Werte zu verwenden , es allgemein entmutigt. Erwägen Sie stattdessen die Verwendung einer Struktur, mit der Sie explizite Mitglieder mit eindeutigen Werten definieren können. Allerdings können Strukturen im Vergleich zu Aufzählungen einen höheren Speicheraufwand verursachen. Setzen Sie sie daher entsprechend Ihren Anforderungen mit Bedacht ein.

Das obige ist der detaillierte Inhalt vonWarum erlaubt C# nicht eindeutige Enum-Werte und sollte ich stattdessen eine Struktur verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage