Maison > développement back-end > C++ > Comment pouvons-nous contourner le manque de contraintes génériques Enum en C# ?

Comment pouvons-nous contourner le manque de contraintes génériques Enum en C# ?

Patricia Arquette
Libérer: 2025-01-19 07:06:09
original
661 Les gens l'ont consulté

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

Alternative C# aux contraintes génériques d'énumération

En programmation C#, le manque de contraintes génériques d'énumération peut créer des défis lorsque l'on tente d'effectuer certaines opérations sur les énumérations de drapeaux. Pour résoudre ce problème, examinons une solution de contournement utilisant la bibliothèque UnconstrainedMelody.

UnconstrainedMelody convertit les contraintes génériques "pseudo" en contraintes "réelles". Par exemple, ce serait :

<code>where T : struct, IEnumConstraint</code>
Copier après la connexion

Convertir en :

<code>where T : struct, System.Enum</code>
Copier après la connexion

Cela permet aux développeurs de définir des méthodes telles que :

<code>public static bool IsSet<T>(this T input, T matchTo)
    where T : System.Enum
{
    return (input & matchTo) != 0;
}</code>
Copier après la connexion

En utilisant cette méthode, vous pouvez :

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

if (tester.IsSet(MyEnum.FlagA))
    // 对标志 a 执行操作</code>
Copier après la connexion

UnconstrainedMelody s'intègre de manière transparente une fois les étapes post-construction terminées.

Cependant, considérez le comportement de la méthode 'IsSet' lorsque plusieurs indicateurs sont spécifiés :

<code>tester.IsSet(MyFlags.A | MyFlags.C);</code>
Copier après la connexion

Devrait-il vérifier si tous les drapeaux sont activés, ou un seul ? Le comportement recommandé consiste à vérifier tous les indicateurs.

UnconstrainedMelody propose plusieurs options de dénomination pour cette méthode :

  • Comprend
  • Contient
  • HasFlag/HasFlags
  • IsSet

Bien que le nom « IsSet » fonctionne, les commentaires sont les bienvenus. Veuillez garder à l'esprit que cette solution de contournement est susceptible de changer et UnconstrainedMelody accepte les correctifs ou les soumissions directes.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal