Дано:
static TDest Gimme<TSource,TDest>(TSource source)
{
return default(TDest);
}
Почему я не могу:
string dest = Gimme(5);
без получения ошибки компилятора:
error CS0411: The type arguments for method 'Whatever.Gimme<TSource,TDest>(TSource)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
5
может быть выведен как int
, но существует ограничение, при котором компилятор не сможет/не сможет разрешить возвращаемый тип как string
. Я читал в нескольких местах, что это по дизайну, но никаких реальных объяснений. Я где-то читал, что это может измениться на С# 4, но это не так.
Кто-нибудь знает, почему возвращаемые типы не могут быть выведены из общих методов? Это один из тех вопросов, когда ответ настолько очевиден, что он смотрит вам в лицо? Надеюсь, что нет!