Maison > développement back-end > C++ > Comment parcourir uniquement les indicateurs définis dans une énumération C# ?

Comment parcourir uniquement les indicateurs définis dans une énumération C# ?

DDD
Libérer: 2024-12-26 21:53:13
original
337 Les gens l'ont consulté

How to Iterate Over Only the Set Flags in a C# Enum?

Itération sur les valeurs d'une énumération avec des indicateurs

Question :

Lorsque vous travaillez avec un enum qui prend en charge les indicateurs, comment peut-on parcourir spécifiquement les valeurs individuelles à un seul bit définies dans une variable particulière ? Est-il possible d'éviter d'itérer sur l'ensemble de l'énumération à l'aide d'Enum.GetValues ?

Réponse :

Oui, il est possible de parcourir les valeurs d'indicateur individuelles dans une variable d'énumération sans avoir besoin d'énumérer l'intégralité de l'énumération et de vérifier si les valeurs sont définies. Ceci peut être réalisé en utilisant l'extrait de code suivant :

static IEnumerable<Enum> GetFlags(Enum input)
{
    foreach (Enum value in Enum.GetValues(input.GetType()))
        if (input.HasFlag(value))
            yield return value;
}
Copier après la connexion

Explication :

  1. La méthode GetValues ​​renvoie un tableau de toutes les valeurs possibles pour l'énumération spécifiée. tapez.
  2. Pour chaque valeur du tableau, la méthode HasFlag est utilisée pour vérifier si l'indicateur est défini dans l'entrée variable.
  3. Si l'indicateur est défini, la valeur est renvoyée par la méthode GetFlags.

En utilisant cette approche, vous pouvez parcourir efficacement les valeurs d'indicateur individuelles de l'énumération. variable.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal