匿名型の Generic リスト

C# 3.0 の匿名型&型推論、最初はものすごく気持ち悪かったけども、最近どんどん変態的な使い方を覚え始めたかも。

LINQ では、匿名型の IEnumerable を使うことになるわけですけども、たまに、空のリストを用意して、それに後から匿名型の要素を追加したい場合が。匿名型の Generic リストをどうやって作ろうか悩んだ結果、以下のようなコードに。

var list = Enumerable.Range(0 0)
  .Select(x => new { Name = "", Value = 0.0 })
  .ToList();

list.Add(new { Name = "test1", Value = 1.0 });
list.Add(new { Name = "test2", Value = 2.0 });

関数を書くのが面倒でなければ以下のコードでいいんですけど。

static void Main(string[] args)
{
  var l = List(new { Name = "", Value = 0.0 });
}

static List<T> List<T>(T x)
{
  return new List<T>();
}

この中身たった1行の関数を書くのをサボるために上のコードを書く辺り、すっかり毒づいた感じ。