C# 逻辑运算符中参数的顺序是否影响相等?

C# 逻辑运算符中参数的顺序是否影响相等?,c#,.net,logical-operators,boolean-logic,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; } } 在这两种类型的逻辑表达式中?您是否考虑过创建两个属性Left和R

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

public enum LogicalOperator { And, Or };

public class LogicalExpression
{
    public LogicalOperator Operator { get; private set; }
    public List<object> Expressions { get; private set; }
}

在这两种类型的逻辑表达式中?您是否考虑过创建两个属性
Left
Right
,而不是操作数列表?@IlyaIvanov已经完成了。但有时,在逻辑表达式中使用左、右两个片段生成一堆内部表达式是非常烦人的;它使用与基础数学相似的规则。等于乘法。就OOp而言,Or相当于加法。哦,括号非常重要。你的逻辑系统包括副作用还是例外?例如,在C语言中,您总是希望在
x!=空和x.Foo!=空
;如果你从右到左评估,那么右边可能会抛出。
 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));                        
            }
        }
}