Это кажется мне странным, но я помню цепочку, в которой Эрик Липперт прокомментировал неспособность (по замыслу или, по крайней мере, по соглашению, я думаю) C # перегрузить методы на основе возвращаемого типа, так что, возможно, это каким-то запутанным образом
Есть ли причина, по которой это не работает:
public static T Test<T>() where T : new()
{
return new T();
}
// Elsewhere
SomeObject myObj = Test();
Но это работает:
var myObj = Test<SomeObject>();
С определенной точки зрения, они оба в порядке, в том смысле, что вы не повторяете себя (в очень маленьком способ), но это просто другой проход компилятора?