[C#]enumの要素をforeachで列挙|switch文で使う方法・LINQを使用する方法
![[C#]enumの要素をforeachで列挙|switch文で使う方法・LINQを使用する方法](/dotnet/column/wp-content/uploads/2020/06/pixta_53635049_M-1024x682.jpg)
- システム
エンジニア - 列挙型の構文でループ処理は可能なのでしょうか?
- プロジェクト
マネージャー - もちろん可能です。ここではenumの要素をforeachで値と名前を列挙す方法を、実際の構文を見ながら理解していきましょう。
[C#]enumの要素をforeachで列挙してみよう!
今回は、C#でのenumの要素をforeachで列挙する方法について説明します。ここでは、GetValuesで名前と値を列挙、GetNamesで名前を列挙、switch文で使う方法、LINQを使用する方法について紹介します。
C#でのenumの要素をforeachで列挙する方法に興味のある方はぜひご覧ください。
GetValues
C#のenumに対して、foreachでGetValuesを使って値を列挙する方法を紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
using System;
public class Hello{
// enumの宣言
public enum EnumColor{
RED = 0,
GREEN = 1,
BLUE = 2,
YELLOW = 3,
BLACK = 4,
WHITE = 5
}
public static void Main(){
// foreachで名前を列挙する
foreach(var i in Enum.GetValues(typeof(EnumColor))){
Console.WriteLine(i);
}
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
|
RED
GREEN
BLUE
YELLOW
BLACK
WHITE
|
foreachで名前と値を列挙するには、GetValuesを使って以下のように記述します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
using System;
public class Hello{
// enumの宣言
enum EnumColor{
RED = 0,
GREEN = 1,
BLUE = 2,
YELLOW = 3,
BLACK = 4,
WHITE = 5
}
public static void Main(){
// foreachでnameとvalueを列挙する
foreach (EnumColor Value in Enum.GetValues(typeof(EnumColor))){
// enumの要素取得
string color = Enum.GetName(typeof(EnumColor), Value);
Console.WriteLine("name:{0}, value:{1}", color, (int)Value);
}
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
|
name:RED, value:0
name:GREEN, value:1
name:BLUE, value:2
name:YELLOW, value:3
name:BLACK, value:4
name:WHITE, value:5
|
このようにC#では、enumに対してGetValuesで名前と値を列挙できます。
GetNames
C#のenumに対して、foreachでGetNamesを使って名前を列挙する方法を紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
using System;
public class Hello{
// enumの宣言
enum EnumColor{
RED = 0,
GREEN = 1,
BLUE = 2,
YELLOW = 3,
BLACK = 4,
WHITE = 5
}
public static void Main(){
// foreachでnameを列挙する
foreach (string color in Enum.GetNames(typeof(EnumColor))){
Console.WriteLine("name:{0}", color);
}
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
|
name:RED
name:GREEN
name:BLUE
name:YELLOW
name:BLACK
name:WHITE
|
このようにC#では、enumに対してGetNamesで名前を列挙できます。
switch文で使う
C#のenumに対して、switch文で分岐させる方法を紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
using System;
public class Hello{
// enumの宣言
public enum EnumColor{
RED = 0,
GREEN = 1,
BLUE = 2,
YELLOW = 3,
BLACK = 4,
WHITE = 5
}
public static string GetColorText(EnumColor color){
string ret;
switch(color){
case EnumColor.RED:
ret = "あか";
break;
case EnumColor.GREEN:
ret = "みどり";
break;
case EnumColor.BLUE:
ret = "あお";
break;
case EnumColor.YELLOW:
ret = "きいろ";
break;
case EnumColor.BLACK:
ret = "くろ";
break;
case EnumColor.WHITE:
ret = "しろ";
break;
default:
ret = "なし";
break;
}
return ret;
}
public static void Main(){
// foreachでGetColorTextを呼び出す
foreach(var i in Enum.GetValues(typeof(EnumColor))){
Console.WriteLine(GetColorText((EnumColor)i));
}
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
|
あか
みどり
あお
きいろ
くろ
しろ
|
LINQを使用する
C#のenumに対して、LINQを使用する方法を紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
using System;
using System.Linq;
public class Hello{
// enumの宣言
public enum EnumColor{
RED = 0,
GREEN = 1,
BLUE = 2,
YELLOW = 3,
BLACK = 4,
WHITE = 5
}
public static string GetColorText(EnumColor color){
string ret;
switch(color){
case EnumColor.RED:
ret = "あか";
break;
case EnumColor.GREEN:
ret = "みどり";
break;
case EnumColor.BLUE:
ret = "あお";
break;
case EnumColor.YELLOW:
ret = "きいろ";
break;
case EnumColor.BLACK:
ret = "くろ";
break;
case EnumColor.WHITE:
ret = "しろ";
break;
default:
ret = "なし";
break;
}
return ret;
}
public static void Main(){
// enumのvalueをListに変換
var mylist1 = Enum.GetValues(typeof(EnumColor)).OfType().ToList();
Console.WriteLine("{0}", string.Join(",", mylist1)); // RED,GREEN,BLUE,YELLOW,BLACK,WHITE
// GetColorTextの結果をListに変換
var mylist2 = Enum.GetValues(typeof(EnumColor)).OfType().Select(v => GetColorText(v)).ToList();
Console.WriteLine("{0}", string.Join(",", mylist2)); // あか,みどり,あお,きいろ,くろ,しろ
// GetColorTextの結果のうち、3文字のものをListに変換
var mylist3 = Enum.GetValues(typeof(EnumColor)).OfType().Select(v => GetColorText(v)).Where(v => v.Length == 3).ToList();
Console.WriteLine("{0}", string.Join(",", mylist3)); // みどり,きいろ
}
}
|
実行結果は以下のようになります。
1
2
3
|
RED,GREEN,BLUE,YELLOW,BLACK,WHITE
あか,みどり,あお,きいろ,くろ,しろ
みどり,きいろ
|
- システム
エンジニア - 値と名前を抜き出してループさせることも、分岐させることも可能なんですね。
- プロジェクト
マネージャー - 非常に便利な構文ですので、ぜひ覚えてみてください。
まとめ
いかがでしたでしょうか。C#にて、enumの要素をforeachで列挙する方法について説明しました。ここでは、GetValuesで名前と値を列挙、GetNamesで名前を列挙、switch文で使う方法、LINQを使用する方法について紹介しました。
ぜひご自身でC#のソースコードを書いて、理解を深めてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


C#新着案件New Job
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)