과제:
메서드 시그니처 제공:
public bool AreTheSame<T>(Expression<Func<T, object>> exp1, Expression<Func<T, object>> exp2)
두 표현식이 동일한지 확인하는 가장 효과적인 방법을 결정하십시오. 이 평가는 c =>와 같은 간단한 MemberExpression만 지원해야 합니다. 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#에서 람다 식의 동등성을 어떻게 효율적으로 비교할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!