C# Func
C# では、ラムダ式は軽量関数を表す便利な方法を提供します。ラムダを Expression
課題
ただし、次のコードに示すように、コンパイル時エラーのため、そのような直接変換は不可能です。 :
public void ContainTheDanger(Func<T> dangerousCall) { try { dangerousCall(); } catch (Exception e) { // This next line does not work... Expression<Func<T>> DangerousExpression = dangerousCall; var nameOfDanger = ((MemberExpression)dangerousCall.Body).Member.Name; throw new DangerContainer("Danger manifested while " + nameOfDanger, e); } }
このエラーは、Func
制限
残念ながら、目的の変換を達成する簡単な方法はありません。 Func
代替アプローチ
代替案として、次のことを検討できます。
ただし、これらのアプローチには通常、複雑な処理が含まれます。そして間違いが起こりやすい
結論
Func
以上がC# の関数を式に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。