こんにちわ、C#大好きオオバです。

Enumに定義した全ての値名を配列で
取得する方法の紹介をします。

📝 目次

やりたいこと

配列で取得したEnum
enum SampleEnum  
{
    Ne = 0, Ushi = 1, Tora = 2  
}

中身がNe, Ushi, Tora
配列を取得したい。

結論: GetValuesメソッドを使う

SampleEnum[] result  
    = Enum.GetValues(typeof(SampleEnum));  

GetValuesメソッドを使うとよいです。

無駄な書き方を紹介

ここからは書いてしまいがちな
無駄な記法の紹介です。

  1. GetNamesで文字列の配列を取得
  2. ParseしてEnumとして取り出しリスト追加
// 1.GetNamesで文字列の配列を取得  
var enumNames = Enum.GetNames(typeof(SampleEnum));  
var result = new List();  
foreach (var enumName in enumNames)  
{
    // 2.ParseしてEnumとして取り出しリスト追加  
    var value = Enum.Parse(typeof(SampleEnum, enumName));  
    result.Add(value);  
}

これらの無駄なコストが
計上されていました。

【注意】受け取る型の違いで変化

配列に格納したEnumの値は
格納する変数の型で動的に変わります。

var → Enum型へ

foreachの型をvarで宣言すると、
格納される値はEnum型(この場合SampleEnum型)になります。
※文字列ではない

var values = Enum.GetValues(typeof(SampleEnum));  
// 「var」で受け取るとEnum型で取得  
foreach (var v in values) Debug.Log(v);  
// Ne, Ushi, Toraと出力される  

int型 → int型へ

int型で受け取ると暗黙的に
キャストされてint型で取得できます。

var values = Enum.GetValues(typeof(SampleEnum));  
// 「int型」で受け取るとint型で取得  
foreach (int v in values) Debug.Log(v);  
// 0, 1, 2と出力される  

まとめ

Enumの値を配列で受け取る方法と、
やりがちなミス記法を紹介しました。

とりあえずGetValues
使えばOKです。

そしてEnumの値配列から取得する時は、
受け取る宣言でEnum型、int型と変化します。

適宜使い分けていきましょう。

👉 オススメ記事

2021秋 Asset Refreshセール
100以上のアセットがなんと50%OFF!!オオバもいくつか買いました!
期間 : 10月2日午後3時59分まで