Je suis curieux de savoir les différences entre appeler un Func directement et utiliser Invoke () dessus. Y a-t-il une différence? Est-ce que le premier, le sucre syntaxique, et appelle Invoke () de toute façon?
public T DoWork<T>(Func<T> method)
{
return (T)method.Invoke();
}
contre
public T DoWork<T>(Func<T> method)
{
return (T)method();
}
Ou suis-je complètement sur la mauvaise voie :) Merci.
Il n'y a aucune différence. Le second n'est qu'un raccourci pour Invoke
, fourni par le compilateur. Ils compilent vers le même IL.
Invoke fonctionne bien avec le nouvel opérateur de propagation nulle C # 6, maintenant vous pouvez le faire
T result = method?.Invoke();
au lieu de
T result = method != null ? method() : null;