为什么不能推断出这些类型的论点?

Pie*_*kel 7 .net c# generics type-inference

可能重复:
C#3.0泛型类型推断 - 将委托作为函数参数传递

为什么不能Main推断出调用中以下代码示例的类型参数?

using System;

class Program
{
    static void Main(string[] args)
    {
        Method(Action);
    }

    static void Action(int arg)
    {
        // ...
    }

    static void Method<T>(Action<T> action)
    {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这给出以下错误消息:

错误CS0411:Program.Method<T>(System.Action<T>) 无法从用法推断出方法的类型参数.尝试显式指定类型参数.

The*_*ing 0

只是把这是一个编译器我明白你的意思了。

我认为这是因为Action被用作方法组,但它不是 type Action<int>

如果将其转换为这种类型,它会起作用:

Method((Action<int>)Action);
Run Code Online (Sandbox Code Playgroud)

  • 我希望它是 int 。我想OP已经知道编译器告诉他什么了。 (5认同)