挑戰:
給定方法簽名:
public bool AreTheSame<T>(Expression<Func<T, object>> exp1, Expression<Func<T, object>> exp2)
確定確定兩個表達式是否等價的最有效方法。此評估應僅支援簡單的MemberExpressions,例如c => c.ID.
建議的解決方案:
下面介紹了支援陣列、新運算符等的Marc 程式碼的最佳化版本。它採用了一種更優雅的方法來比較 AST。
public static class LambdaCompare { public static bool Eq<TSource, TValue>( Expression<Func<TSource, TValue>> x, Expression<Func<TSource, TValue>> y) { return ExpressionsEqual(x, y, null, null); } ... private static bool ExpressionsEqual(Expression x, Expression y, LambdaExpression rootX, LambdaExpression rootY) { ... } ... }
詳細說明:
優點:
以上是如何高效比較 C# 中 Lambda 表達式的相等性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!