C# 3.0 における疑似 Map 生成リテラル
に触発されてコードを書いてみました。
というかJavaコードを移植した程度なんですけどね…。
もとのコードはこちら
Java Map literals, continued - Nicolas Lehuen’s Weblog
最近はListやMapの使い勝手が良く使用頻度も激増な私ですが、配列のように生成子での初期化が手軽に出来ないのが悩みです。
上記リンクのように「手軽に生成したい」と考える人は多そうなので.NET版に移植してみました。
を読んで mayuki さんが先日書いていた『Perl とかみたいな書式で Dictionary を初期化したい。 』を思い出す.
以下 mayuki さんバージョンを微妙に改変版.
using System; using System.Linq; using System.Collections.Generic; using System.Linq.Expressions; using System.Diagnostics; class Program { static void Main(string[] args) { var dict = Dictionary ( x => "foo", y => "bar", Hauhau => "gaogao" ); var dict2 = new Dictionary<String, String>() { {"x", "foo"}, {"y", "bar"}, {"Hauhau", "gaogao"} }; Debug.Assert(Enumerable.SequenceEqual(dict, dict2)); } static Dictionary<String, T> Dictionary<T>(params Expression<Func<Object, T>>[] exprs) { return exprs.ToDictionary(expr => expr.Parameters[0].Name, expr => expr.Compile().Invoke(null)); } }