Maison >développement back-end >C++ >Comment puis-je créer des unions discriminées de type sécurisé en C# ?

Comment puis-je créer des unions discriminées de type sécurisé en C# ?

DDD
DDDoriginal
2025-01-04 06:28:44779parcourir

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

Unions discriminées en C#

Une union discriminée est une structure de données qui peut stocker des valeurs de plusieurs types différents. Contrairement aux unions traditionnelles en C, les unions discriminées appliquent la sécurité des types au moment de la compilation.

Énoncé du problème

La question d'origine présente un problème dans lequel l'auteur souhaite créer une structure de données. qui peut stocker des valeurs de différents types, mais avec une vérification de type forcée. L'auteur tente d'implémenter une solution en utilisant une classe Union personnalisée, mais elle manque de sécurité de type appliquée par le compilateur.

Solution

La solution fournie dans la section de réponse répond au problème de sécurité de type en utilisant une implémentation d’union de type sécurisé. Cette implémentation définit une classe de base Union3 qui représente l'union discriminée, et trois classes imbriquées Case1, Case2 et Case3 qui représentent les différents cas de l'union.

La méthode Match de la classe de base prend trois fonctions comme arguments , chacun correspondant à un type différent que le syndicat peut détenir. Lors de l'appel de Match, la fonction appropriée est exécutée en fonction du type réel de la valeur stockée dans l'union.

Détails d'implémentation

Les classes imbriquées Case1, Case2 et Case3 sont utilisés pour encapsuler les valeurs de leurs types respectifs. Le constructeur de la classe de base est rendu privé pour empêcher les classes externes d'en hériter.

Utilisation

L'exemple fourni montre comment utiliser l'union de type sécurisé pour stocker des valeurs de différents types et les faire correspondre en fonction de leurs types réels. La méthode Match permet une extraction de type sécurisé de la valeur de l'union.

Conclusion

Cette solution fournit une implémentation de type sécurisé d'une union discriminée en C#. Il élimine le besoin de vérification manuelle du type et garantit que le code gère correctement les différents types stockés dans l'union.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn