Func <T>() vs Func <T>.Invoke() - программирование
Подтвердить что ты не робот

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

Мне интересно узнать о различиях между вызовом Func напрямую и использованием Invoke(). Есть ли разница? Является первым, синтаксическим сахаром и вызовами Invoke() под любым способом?

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

против

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

Или я ошибаюсь полностью:) Спасибо.

4b9b3361

Ответ 1

Нет никакой разницы. Второй - это сокращение от Invoke, предоставляемое компилятором. Они скомпилируются с тем же ИЛ.

Ответ 2

Invoke хорошо работает с новым оператором распространения С# 6, теперь вы можете сделать

T result = method?.Invoke();

вместо

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