У меня есть следующий фрагмент кода:Общий вывод типа объяснение
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);
}
}
}
Compiling это на машине только с Visual Studio 2012 работает как шарм. Однако, чтобы скомпилировать его на машине всего за 2010 год, необходимо удалить комментарий вокруг <int, int>
.
Может кто-нибудь уточнить, почему это работает в 2012 году, и где в спецификации это объясняется?
Они, вероятно, улучшили возможность вывода типов компилятора, но это не кажется, в списке изменений: HTTP://stackoverflow.com/a/11549260/870604 – ken2k