c# - 为什么这行得通?

标签 c# .net generics type-inference

为什么会这样?我不是在提示,只是想知道。

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)
{

}

最佳答案

之所以有效,是因为 ab是整数,因此编译器可以推断出 What 的泛型类型参数.

在 C# 3 中,即使类型不匹配,编译器也可以推断类型参数,只要扩展转换有意义。例如,如果 clong , 然后 What(a, c)将被解释为 What<long> .

请注意,如果,比方说,cstring ,那是行不通的。

关于c# - 为什么这行得通?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2765758/

相关文章:

c# - 如何消除动画撕裂?

.net - 在 Vista Home Premium 上开发 .NET 有什么损失

具有泛型和协变返回的 Java 并行继承层次结构

java - java中的泛型错误

c# - 到期时自动重新填充缓存

c# - 从面板中删除动态控件

c# - 根据以下标准开发桌面应用程序的语言/平台

c# - 正则表达式前瞻在 .NET 中不起作用

generics - 具有泛型的特征的语法

c# - 向现有 XmlDocument 对象添加新节点