かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

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イベントで適当に匿名型でデータをこさえてコンボボックスに設定している。
ボタンクリックのときに、選択された値をメッセージボックスで出力している。


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