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マジヤバイ。諸刃の剣過ぎる。