enum(列挙型)を使うと、曜日や月、年号など特定の値しかとらないデータの表現が可能になります。enum は switch 文の case 値によく使用され、条件の場合分けに活用されます。
本記事では enum で定義した全要素をリスト化して取得する方法を紹介します。
enum の全要素をリスト型(List)で取得する方法
以下にサンプルコードを記載します。
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public class Test : MonoBehaviour
{
public enum Week
{
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6,
Sunday = 7,
}
void Start()
{
// enum の Week をリストに変換して取得
List<Week> weekList = Enum.GetValues(typeof(Week))
.Cast<Week>()
.ToList();
Debug.Log(String.Join(Environment.NewLine, weekList));
}
/*
出力結果
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
*/
}
Enum.GetValues()
を使い、指定した列挙体に含まれている定数の値の配列を取得します。その配列を Week でキャストし、ToList()
でリスト型に変換しています。
Cast
や ToList()
を使う際は名前空間に以下の宣言が必要です。
using System.Linq;
配列型で取得したい場合は ToList()
の代わりに ToArray()
を使うことで実現可能です。
// enum の Week を配列に変換して取得
Week[] weeks = Enum.GetValues(typeof(Week))
.Cast<Week>().ToArray();
参考資料
- 列挙型 (C# リファレンス) | Microsoft .NET
関連記事
【C#】ゲーム開発における enum を用いたビット演算の活用方法【C#】要素に重複のないリストを作成する3つの方法【List】