103

我很好奇Func<T>直接调用 a 与使用Invoke()它之间的区别。有区别吗?无论如何,第一个语法糖和调用是Invoke()在下面吗?

public T DoWork<T>(Func<T> method)
{
    return (T)method.Invoke();
}

对比

public T DoWork<T>(Func<T> method)
{
    return (T)method();
}

还是我完全走错了路?

4

2 回答 2

138

根本没有区别。第二个只是Invoke编译器提供的简写。它们编译为相同的 IL。

于 2013-04-30T21:34:41.490 回答
24

Invoke 适用于新的 C# 6 空传播运算符,现在您可以执行

T result = method?.Invoke();

代替

T result = method != null ? method() : null;
于 2018-02-25T10:51:48.033 回答