Tup.Cobar4Net.Parser.Ast.Expression.Comparison.ComparisionNullSafeEqualsExpression.EvaluationInternal C# (CSharp) Method

EvaluationInternal() protected method

protected EvaluationInternal ( object>.IDictionary parameters ) : object
parameters object>.IDictionary
return object
        protected override object EvaluationInternal(IDictionary<object, object> parameters)
        {
            var left = LeftOprand.Evaluation(parameters);
            var right = rightOprand.Evaluation(parameters);
            if (left == ExpressionConstants.Unevaluatable || right == ExpressionConstants.Unevaluatable)
            {
                return ExpressionConstants.Unevaluatable;
            }
            if (left == null)
            {
                return right == null ? LiteralBoolean.True : LiteralBoolean.False;
            }
            if (right == null)
            {
                return LiteralBoolean.False;
            }
            if (left is Number || right is Number)
            {
                var pair = ExprEvalUtils.ConvertNum2SameLevel(left, right);
                left = pair.Key;
                right = pair.Value;
            }
            return left.Equals(right) ? LiteralBoolean.True : LiteralBoolean.False;
        }
    }