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
DDDoriginal
2024-12-26 21:53:13436parcourir

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;
}

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!

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