Funcを直接呼び出すことと、それに対してInvoke()を使用することの違いに興味があります。違いはありますか?最初の構文上の糖であり、とにかくInvoke()を呼び出しますか?
public T DoWork<T>(Func<T> method)
{
return (T)method.Invoke();
}
対
public T DoWork<T>(Func<T> method)
{
return (T)method();
}
または、私は完全に間違った方向に進んでいます:)ありがとう。
まったく違いはありません。 2番目は、コンパイラによって提供されるInvoke
の省略形です。それらは同じILにコンパイルされます。
Invokeは新しいC#6 null伝播演算子でうまく機能します。
T result = method?.Invoke();
の代わりに
T result = method != null ? method() : null;