最近知ったんだけど、戻り値がジェネリックなメソッドでは、やろうと思えば匿名型も返せるみたいだ。
using System; namespace AnonymousClassSample { class Program { public static T Foo<T>(Func<T> method) { return method(); } static void Main(string[] args) { // T の型は戻り値から推論してもらう var result = Foo(() => { // 匿名型を返す return new { Name = "Ichiro", Age = 38, }; }); // 匿名型も使える! Console.WriteLine(result.Name); Console.WriteLine(result.Age); Console.ReadLine(); } } }
var の上にマウスカーソルを置くと、ちゃんと「匿名型 'a」って表示される。
ただ、この方法が役に立つ場面なんて、そうそう無いだろうな。でも、もしかしたら、リファクタリングで使えるかもしれない。