C# で列挙型のすべての値をループする方法
C# では、列挙型のすべての値をループする方法はいくつかあります。以下はその方法です。
Enum.GetValues() メソッドを使用する
この方法では、列挙型のすべての値を取得し、配列としてループします。
enum Color
{
Red,
Green,
Blue
}
Color[] colors = Enum.GetValues(typeof(Color));
foreach (Color color in colors)
{
Console.WriteLine(color);
}
この方法では、列挙型のすべての名前を取得し、文字列配列としてループし、必要に応じて列挙値を取得します。
string[] colorNames = Enum.GetNames(typeof(Color));
foreach (string colorName in colorNames)
{
Color color = (Color)Enum.Parse(typeof(Color), colorName);
Console.WriteLine(color );
}
foreach ループと Enum.GetValues() を直接組み合わせて使用する
foreach (Color color in Enum.GetValues(typeof(Color)))
{
Console.WriteLine(color);
}
拡張メソッドを使用する
public static class EnumExtensions
{
public static IEnumerable<T> GetValues<T>() where T : Enum
{
return Enum.GetValues(typeof(T)).C ast<T>();
}
}
foreach (Color color in Color.GetValues())
{
Console.WriteLine(color);
}
注意:
Enum.GetValues()
は、列挙型のすべての値を配列として返します。- 拡張メソッドを使用すると、列挙型に対してカスタムメソッドを追加することができます。
C# 列挙型ループ処理解説
enum Color
{
Red,
Green,
Blue
}
Color[] colors = Enum.GetValues(typeof(Color));
foreach (Color color in colors)
{
Console.WriteLine(color);
}
foreach
ループを使用して、配列内の各値を処理します。
string[] colorNames = Enum.GetNames(typeof(Color));
foreach (string colorName in colorNames)
{
Color color = (Color)Enum.Parse(typeof(Color), colorName);
Console.WriteLine(color );
}
Enum.Parse()
メソッドを使用して、文字列を列挙値に変換します。
foreach (Color color in Enum.GetValues(typeof(Color)))
{
Console.WriteLine(color);
}
foreach
ループ内で直接Enum.GetValues()
を使用して、列挙型のすべての値をループします。
public static class EnumExtensions
{
public static IEnumerable<T> GetValues<T>() where T : Enum
{
return Enum.GetValues(typeof(T)).C ast<T>();
}
}
foreach (Color color in Color.GetValues())
{
Console.WriteLine(color);
}
GetValues()
メソッドは、列挙型のすべての値をIEnumerable<T>
として返します。
C# 列挙型ループ処理解説: 他の方法
Enum.GetValues() と foreach を直接組み合わせて使用する
foreach (Color color in Enum.GetValues(typeof(Color)))
{
Console.WriteLine(color);
}
- この方法は、最もシンプルで直接的な方法です。
public static class EnumExtensions
{
public static IEnumerable<T> GetValues<T>() where T : Enum
{
return Enum.GetValues(typeof(T)).C ast<T>();
}
}
foreach (Color color in Color.GetValues())
{
Console.WriteLine(color);
}
Enum.GetNames() と Enum.Parse() を使用して名前から値を取得する
string[] colorNames = Enum.GetNames(typeof(Color));
foreach (string colorName in colorNames)
{
Color color = (Color)Enum.Parse(typeof(Color), colorName);
Console.WriteLine(color );
}
- この方法は、列挙型の名前から値を取得する場合に使用できます。
Enum.IsDefined() を使用して有効な値かどうかを確認する
foreach (int value in Enum.GetValues(typeof(Color)))
{
if (Enum.IsDefined(typeof(Color), value))
{
Color color = (Color)value;
Console.WriteLine(color);
}
}
c# .net enums