逻辑运算符中的参数顺序是否重要?

时间:2013-05-22 14:55:03

标签: c# .net logical-operators boolean-logic

我正在构建一个包含逻辑表达式的类:

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));                        
            }
        }
}

0 个答案:

没有答案