Heim >Backend-Entwicklung >C++ >Wie kann ich typsichere diskriminierte Unions in C# erstellen?

Wie kann ich typsichere diskriminierte Unions in C# erstellen?

DDD
DDDOriginal
2025-01-04 06:28:44774Durchsuche

How Can I Create Type-Safe Discriminated Unions in C#?

Diskriminierte Unions in C#

Eine diskriminierte Union ist eine Datenstruktur, die Werte mehrerer unterschiedlicher Typen speichern kann. Im Gegensatz zu herkömmlichen Gewerkschaften in C erzwingen diskriminierte Gewerkschaften die Typensicherheit zur Kompilierungszeit.

Problemstellung

Die ursprüngliche Frage stellt ein Problem dar, bei dem der Autor eine Datenstruktur erstellen möchte das Werte verschiedener Typen speichern kann, jedoch mit erzwungener Typprüfung. Der Autor versucht, eine Lösung mithilfe einer benutzerdefinierten Union-Klasse zu implementieren, es fehlt jedoch die vom Compiler erzwungene Typsicherheit.

Lösung

Die im Antwortabschnitt bereitgestellte Lösung befasst sich mit dem Typsicherheitsproblem durch Verwendung einer typsicheren Union-Implementierung. Diese Implementierung definiert eine Basisklasse Union3, die die diskriminierte Union darstellt, und drei verschachtelte Klassen Case1, Case2 und Case3, die die verschiedenen Fälle der Union darstellen.

Die Match-Methode der Basisklasse verwendet drei Funktionen als Argumente , die jeweils einem anderen Typ entsprechen, den die Union enthalten kann. Beim Aufruf von Match wird die entsprechende Funktion basierend auf dem tatsächlichen Typ des in der Union gespeicherten Werts ausgeführt.

Implementierungsdetails

Die verschachtelten Klassen Case1, Case2 und Case3 wird verwendet, um die Werte ihrer jeweiligen Typen zu kapseln. Der Konstruktor der Basisklasse wird privat gemacht, um zu verhindern, dass externe Klassen von ihm erben.

Verwendung

Das bereitgestellte Beispiel zeigt, wie die typsichere Union verwendet wird Speichern Sie Werte verschiedener Typen und gleichen Sie sie basierend auf ihren tatsächlichen Typen ab. Die Match-Methode ermöglicht die typsichere Extraktion des Unionswerts.

Fazit

Diese Lösung bietet eine typsichere Implementierung einer diskriminierten Union in C#. Es macht eine manuelle Typprüfung überflüssig und stellt sicher, dass der Code die verschiedenen in der Union gespeicherten Typen korrekt verarbeitet.

Das obige ist der detaillierte Inhalt vonWie kann ich typsichere diskriminierte Unions in C# erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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