C#::タプルと匿名クラス

タプル

var tuple1 = new Tuple<int, int>(0, 1);
var tuple2 = Tuple.Create(0, 1);
Console.WriteLine(tuple1.Item1);

匿名クラス

var anon = new { v1 = 1, v2 = 2 };
Console.WriteLine(anon.v1);
  • タプルのいいところ=関数の引数や戻り値に渡せる
  • 匿名クラスのいいところ=メンバーがItem1だとかItem2のようなイミフな名前じゃない

匿名クラスのダメ子ちゃんなところを補う方法として、dynamicというのがC#4.0で追加されていて・・・

static dynamic GetDynamicObj(dynamic anon)
{
    return new { Key = anon.v1 , Value = anon.v2 };
}

これを使えば匿名クラスも引数や戻り値にできるのだけど、名前を間違うと実行時エラーになるので注意が必要デース。dynamicマジヤバイ。諸刃の剣過ぎる。