C# 如何从“新建函数”中获取结果<;T>;() { ... }?`

C# 如何从“新建函数”中获取结果<;T>;() { ... }?`,c#,.net,C#,.net,为什么这些打印不同的东西 假设我有这样一门课: public class ExampleOfFunc { public int Addition(Func<int> additionImplementor) { if (additionImplementor != null) return additionImplementor(); return default(int); } } 但这会打印打印Sy

为什么这些打印不同的东西

假设我有这样一门课:

public class ExampleOfFunc
{
    public int Addition(Func<int> additionImplementor)
    {
        if (additionImplementor != null)
            return additionImplementor();
        return default(int);
    }
}
但这会打印
打印System.Func'1[System.Int32]

Console.WriteLine("{0}", new Func<int>(
    () =>
    {
        return 100 + 100;
    }));  // Prints System.Func`1[System.Int32]
Console.WriteLine({0}),新函数(
() =>
{
返回100+100;
}));  // 打印System.Func`1[System.Int32]

假设有50个类和函数,例如
ExampleOfFunc.Addition
。编译器如何知道您想要的是哪个函数?您必须明确地告诉它。

在第二个示例中,您只将匿名函数作为参数提供给Console.WriteLine。您实际上并没有调用该函数。

这一行

return additionImplementor();
调用该函数并返回其结果,然后将其传递给
控制台。WriteLine()

而这条线

Console.WriteLine("{0}", new Func<int>(
    () =>
    {
        return 100 + 100;
    }
));

这正是我们所缺少的。谢谢
Console.WriteLine("{0}", new Func<int>(
    () =>
    {
        return 100 + 100;
    }
));
Console.WriteLine("{0}", new Func<int>(
    () =>
    {
        return 100 + 100;
    }
)());