読者です 読者をやめる 読者になる 読者になる

ジェネリックと匿名型の型推論和えC#風味

最近知ったんだけど、戻り値がジェネリックなメソッドでは、やろうと思えば匿名型も返せるみたいだ。

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」って表示される。

ただ、この方法が役に立つ場面なんて、そうそう無いだろうな。でも、もしかしたら、リファクタリングで使えるかもしれない。