我很好奇直接调用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();
}
或者我完全走错了路线:)谢谢。
答案 0 :(得分:91)
完全没有区别。第二个只是编译器提供的Invoke
的简写。他们编译成同一个IL。
答案 1 :(得分:8)
Invoke适用于新的C#6空传播运算符,现在你可以做
T result = method?.Invoke();
而不是
T result = method != null ? method() : null;