次のコードがあります。
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年に機能するようになったのか、仕様のどこで説明されているのか、誰か詳しく説明できますか?