4

次のコードがあります。

namespace ConsoleApplication1
{
    using System.Collections.Generic;
    using System.Linq;

    internal class Program
    {
        private static void Main(string[] args)
        {
            var bar = new object();

            var result = new int[] { 1, 2, 3 }
                .Select/* <int,int> */(bar.Test<int>)
                .ToList();
        }
    }

    public static class Extensions
    {
        public static TReturnType Test<TReturnType>(this object o, int e)
        {
            return default(TReturnType);
        }
    }
}

これを Visual Studio 2012 のみのマシンでコンパイルするのは魅力的です。ただし、2010 だけのマシンでコンパイルするには、<int, int>.

なぜこれが2012年に機能するようになったのか、仕様のどこで説明されているのか、誰か詳しく説明できますか?

4

1 に答える 1