为什么会这样?我不是在提示,只是想知道。
void Test()
{
int a = 1;
int b = 2;
What<int>(a, b);
// Why does this next line work?
What(a, b);
}
void What<T>(T a, T b)
{
}
最佳答案
之所以有效,是因为 a
和 b
是整数,因此编译器可以推断出 What
的泛型类型参数.
在 C# 3 中,即使类型不匹配,编译器也可以推断类型参数,只要扩展转换有意义。例如,如果 c
是long
, 然后 What(a, c)
将被解释为 What<long>
.
请注意,如果,比方说,c
是string
,那是行不通的。
关于c# - 为什么这行得通?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2765758/