Heim >Backend-Entwicklung >C++ >Wie kann ich typsichere diskriminierte Unions in C# erstellen?
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!