c# - Comment énumérer un enum

Mots clés : c#.netloopsenumsenumerationc#

meilleur 5 Réponses c# - Comment énumérer un enum

vote vote

95

foreach (Suit suit in (Suit[]) Enum.GetValues(typeof(Suit))) { } 
vote vote

86

public enum Suits {     Spades,     Hearts,     Clubs,     Diamonds,     NumSuits }  public void PrintAllSuits() {     foreach (string name in Enum.GetNames(typeof(Suits)))     {         System.Console.WriteLine(name);     } } 
public enum Suits {     Spades,     Hearts,     Clubs,     Diamonds,     NumSuits }  public void PrintAllSuits() {     foreach (var suit in Enum.GetValues(typeof(Suits)))     {         System.Console.WriteLine(suit.ToString());     } } 
vote vote

75

public static class EnumExtensions {     /// <summary>     /// Gets all items for an enum value.     /// </summary>     /// <typeparam name="T"></typeparam>     /// <param name="value">The value.</param>     /// <returns></returns>     public static IEnumerable<T> GetAllItems<T>(this Enum value)     {         foreach (object item in Enum.GetValues(typeof(T)))         {             yield return (T)item;         }     }      /// <summary>     /// Gets all items for an enum type.     /// </summary>     /// <typeparam name="T"></typeparam>     /// <param name="value">The value.</param>     /// <returns></returns>     public static IEnumerable<T> GetAllItems<T>() where T : struct     {         foreach (object item in Enum.GetValues(typeof(T)))         {             yield return (T)item;         }     }      /// <summary>     /// Gets all combined items from an enum value.     /// </summary>     /// <typeparam name="T"></typeparam>     /// <param name="value">The value.</param>     /// <returns></returns>     /// <example>     /// Displays ValueA and ValueB.     /// <code>     /// EnumExample dummy = EnumExample.Combi;     /// foreach (var item in dummy.GetAllSelectedItems<EnumExample>())     /// {     ///    Console.WriteLine(item);     /// }     /// </code>     /// </example>     public static IEnumerable<T> GetAllSelectedItems<T>(this Enum value)     {         int valueAsInt = Convert.ToInt32(value, CultureInfo.InvariantCulture);          foreach (object item in Enum.GetValues(typeof(T)))         {             int itemAsInt = Convert.ToInt32(item, CultureInfo.InvariantCulture);              if (itemAsInt == (valueAsInt & itemAsInt))             {                 yield return (T)item;             }         }     }      /// <summary>     /// Determines whether the enum value contains a specific value.     /// </summary>     /// <param name="value">The value.</param>     /// <param name="request">The request.</param>     /// <returns>     ///     <c>true</c> if value contains the specified value; otherwise, <c>false</c>.     /// </returns>     /// <example>     /// <code>     /// EnumExample dummy = EnumExample.Combi;     /// if (dummy.Contains<EnumExample>(EnumExample.ValueA))     /// {     ///     Console.WriteLine("dummy contains EnumExample.ValueA");     /// }     /// </code>     /// </example>     public static bool Contains<T>(this Enum value, T request)     {         int valueAsInt = Convert.ToInt32(value, CultureInfo.InvariantCulture);         int requestAsInt = Convert.ToInt32(request, CultureInfo.InvariantCulture);          if (requestAsInt == (valueAsInt & requestAsInt))         {             return true;         }          return false;     } } 
[Flags] public enum EnumExample {     ValueA = 1,     ValueB = 2,     ValueC = 4,     ValueD = 8,     Combi = ValueA | ValueB } 
vote vote

70

public Enum[] GetValues(Enum enumeration) {     FieldInfo[] fields = enumeration.GetType().GetFields(BindingFlags.Static | BindingFlags.Public);     Enum[] enumerations = new Enum[fields.Length];      for (var i = 0; i < fields.Length; i++)         enumerations[i] = (Enum) fields[i].GetValue(enumeration);      return enumerations; } 
vote vote

54

var suits = Enum.GetValues(typeof(Suit)).Cast<Suit>(); 

Questions similaires