Func<T>() vs Func<T>.Invoke()

本文关键字:gt Func lt Invoke vs | 更新日期: 2023-09-27 18:11:40

我很好奇直接调用Func<T>与使用Invoke()之间的差异。有区别吗?是第一个语法糖和调用Invoke()下面不管怎样?

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

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

还是我完全走错了方向?

Func<T>() vs Func<T>.Invoke()

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

Invoke与新的c# 6 null传播操作符一起工作得很好,现在您可以

T result = method?.Invoke();

代替

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