轉換C# Func
在C# 中,lambda 表達式提供了一種表示輕量級函數的便捷方法。雖然將 lambda 轉換為 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中文網其他相關文章!