Func <t>()vs Func <t> .Invoke()</t> </t>

时间:2013-04-30 21:30:55

标签: c# invoke func

我很好奇直接调用Func和使用Invoke()之间的区别。有区别吗?是第一个,语法糖,并在下面调用Invoke()吗?

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

VS

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

或者我完全走错了路线:)谢谢。

2 个答案:

答案 0 :(得分:91)

完全没有区别。第二个只是编译器提供的Invoke的简写。他们编译成同一个IL。

答案 1 :(得分:8)

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

T result = method?.Invoke();

而不是

T result = method != null ? method() : null;