かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

C#3.0 匿名型の使い道

C#3.0で追加される機能の中に

new { プロパティ名 = 値[, プロパティ名 = 値] }

という感じでその場限りの型とかを作れる機能がある。

これってComboBoxのデータソースとかにつっこむのにぴったりじゃない?ってことで出来るか試してみた。

Windowsアプリのプロジェクトを作成。
ComboBoxとButtonを1つ置いてフォームに下のようなコードを書き込む。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Combo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            var comboDataSource = new[]{
                                      new { Label = "A", Value = 1 },
                                      new { Label = "B", Value = 2 },
                                      new { Label = "C", Value = 3 },
                                      new { Label = "D", Value = 4 },
                                      new { Label = "E", Value = 5 }
                                  };
            comboBox1.DataSource = comboDataSource;
            comboBox1.DisplayMember = "Label";
            comboBox1.ValueMember = "Value";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(comboBox1.SelectedValue.ToString());
        }
    }
}

コードは説明いらないくらいだと思うけど、OnLoadイベントで適当に匿名型でデータをこさえてコンボボックスに設定している。
ボタンクリックのときに、選択された値をメッセージボックスで出力している。


実行してみると、ちゃんと動いた!!
便利便利。