Heim > Backend-Entwicklung > C++ > Wie können wir das Fehlen generischer Enum-Einschränkungen in C# umgehen?

Wie können wir das Fehlen generischer Enum-Einschränkungen in C# umgehen?

Patricia Arquette
Freigeben: 2025-01-19 07:06:09
Original
717 Leute haben es durchsucht

How Can We Work Around the Lack of Enum Generic Constraints in C#?

C#-Alternative zu generischen Aufzählungseinschränkungen

Bei der C#-Programmierung kann das Fehlen generischer Enum-Einschränkungen zu Herausforderungen führen, wenn versucht wird, bestimmte Operationen an Flag-Enumerationen auszuführen. Um dieses Problem zu lösen, schauen wir uns eine Problemumgehung mithilfe der UnconstrainedMelody-Bibliothek an.

UnconstrainedMelody wandelt „pseudo“ generische Einschränkungen in „echte“ Einschränkungen um. Zum Beispiel wäre es:

<code>where T : struct, IEnumConstraint</code>
Nach dem Login kopieren

Konvertieren in:

<code>where T : struct, System.Enum</code>
Nach dem Login kopieren

Dadurch können Entwickler Methoden definieren wie:

<code>public static bool IsSet<T>(this T input, T matchTo)
    where T : System.Enum
{
    return (input & matchTo) != 0;
}</code>
Nach dem Login kopieren

Mit dieser Methode können Sie:

<code>MyEnum tester = MyEnum.FlagA | MyEnum.FlagB;

if (tester.IsSet(MyEnum.FlagA))
    // 对标志 a 执行操作</code>
Nach dem Login kopieren

UnconstrainedMelody lässt sich nahtlos integrieren, nachdem die Post-Build-Schritte abgeschlossen sind.

Berücksichtigen Sie jedoch das Verhalten der Methode „IsSet“, wenn mehrere Flags angegeben sind:

<code>tester.IsSet(MyFlags.A | MyFlags.C);</code>
Nach dem Login kopieren

Sollte überprüft werden, ob alle Flags gesetzt sind oder nur eines? Das empfohlene Verhalten besteht darin, alle Flags zu überprüfen.

UnconstrainedMelody bietet mehrere Benennungsoptionen für diese Methode:

  • Inklusive
  • Enthält
  • HasFlag/HasFlags
  • IsSet

Der Name „IsSet“ funktioniert zwar, Feedback ist jedoch willkommen. Bitte beachten Sie, dass sich diese Problemumgehung ändern kann und UnconstrainedMelody Patches oder direkte Einsendungen begrüßt.

Das obige ist der detaillierte Inhalt vonWie können wir das Fehlen generischer Enum-Einschränkungen in C# umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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