列挙型の値と名称を全て取得したい場合、以下のように配列として取得することができる。
private enum TEST
{
テスト1 = 1,
テスト3 = 3,
テスト5 = 5,
テスト4 = 4,
テスト2 = 2,
}
private void Form1_Load(object sender, EventArgs e)
{
//TEST列挙型の定数の値とその名称を出力
//forでまわしてtextBox1に出力
TEST[] tests = (TEST[])Enum.GetValues(typeof(TEST));
for (int i = 0; i < tests.Length; i++)
{
this.textBox1.Text += (int)tests[i] + ":" + tests[i].ToString() + Environment.NewLine;
}
//foreachでまわしてtextBox2に出力
foreach (TEST test in Enum.GetValues(typeof(TEST)))
{
this.textBox2.Text += (int)test + ":" + test.ToString() + Environment.NewLine;
} //textBox1の出力結果
//1:テスト1
//2:テスト2
//3:テスト3
//4:テスト4
//5:テスト5
//textBox2の出力結果
//1:テスト1
//2:テスト2
//3:テスト3
//4:テスト4
//5:テスト5
}
[/csharp] forでまわすパターンとforeachでまわすパターンを検証してみたけど、どうやら配列で取得する際に定数の値順で取得してるっぽいなぁ。 定義した順に取得してくれてれば、ちょっとうれしかったんだけどなー。