鉴于:
static TDest Gimme<TSource,TDest>(TSource source)
{
return default(TDest);
}
Run Code Online (Sandbox Code Playgroud)
为什么我不能这样做:
string dest = Gimme(5);
Run Code Online (Sandbox Code Playgroud)
没有得到编译器错误:
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.我在几个地方读到这是设计但没有真正的解释.我在某处读过这可能会在C#4中发生变化,但事实并非如此.
任何人都知道为什么不能从泛型方法中推断出返回类型?这是其中一个问题,答案是如此明显,它正盯着你的脸?我希望不是!