Не может ли компилятор C # определить параметры типа метода по ожидаемому возвращаемому типу?

Это кажется мне странным, но я помню цепочку, в которой Эрик Липперт прокомментировал неспособность (по замыслу или, по крайней мере, по соглашению, я думаю) C # перегрузить методы на основе возвращаемого типа, так что, возможно, это каким-то запутанным образом

Есть ли причина, по которой это не работает:

public static T Test<T>() where T : new()
{
    return new T();
}

// Elsewhere
SomeObject myObj = Test();

Но это работает:

 var myObj = Test<SomeObject>();

С определенной точки зрения, они оба в порядке, в том смысле, что вы не повторяете себя (в очень маленьком способ), но это просто другой проход компилятора?

6
задан Marc Bollinger 12 January 2011 в 02:52
поделиться