Task.Factory.StartNew()重载

Gam*_*ing 8 c# compiler-errors task

我的代码非常简单:

static void Main(string[] args)
{
    var task = Task.Factory.StartNew(GetInt);

    var task2 = Task.Factory.StartNew(
        () =>
        {
            return GetInt();
        });
}

static int GetInt()
{
    return 64;
}
Run Code Online (Sandbox Code Playgroud)

为什么第一个任务会出现编译器错误?方法签名(没有参数,返回类型是int)是相等的,不是吗?

我知道一个解决方案(这很简单var task = Task.Factory.StartNew<int>(GetInt);:)但我想知道上面代码的问题是什么.

Ale*_*lex 3

由于方法签名相同,您会收到不明确的调用错误。返回值不是签名的一部分。

由于您没有提供显式返回类型,因此编译器不知道要采用哪个返回类型。

C# 中的方法签名