我正在构建一个包含逻辑表达式的类:
public enum LogicalOperator { And, Or };
public class LogicalExpression
{
public LogicalOperator Operator { get; private set; }
public List<object> Expressions { get; private set; }
}
我正在考虑引入自定义Equals()
和GetHashCode()
. 我不知道逻辑表达式中的表达式顺序是否应该暗示这种逻辑表达式的相等性。
这是实际逻辑表达评估的摘录:
private bool _evaluateExpression(object expr)
{
// ....
if (expr is LogicalExpression)
{
LogicalExpression logExpr = (LogicalExpression)expr;
switch (logExpr.Operator)
{
case LogicalOperator.And:
return !logExpr.Expressions.Exists(e => !this._evaluateExpression(e));
case LogicalOperator.Or:
return logExpr.Expressions.Exists(e => this._evaluateExpression(e));
}
}
}