CSLE.CLS_Expression_Math2ValueLogic.ComputeValue C# (CSharp) Method

ComputeValue() public method

public ComputeValue ( CLS_Content content ) : CLS_Content.Value
content CLS_Content
return CLS_Content.Value
        public CLS_Content.Value ComputeValue(CLS_Content content)
        {
            content.InStack(this);
            CLS_Content.Value result = new CLS_Content.Value();
            result.type = typeof(bool);
            CLS_Content.Value left = listParam[0].ComputeValue(content);
            CLS_Content.Value right = listParam[1].ComputeValue(content);
            if (left.type == null || right.type == null)
            {
                if (mathop == logictoken.equal)
                {
                    result.value = left.value == right.value;
                }
                else if (mathop == logictoken.not_equal)
                {
                    result.value = left.value != right.value;
                }
            }
            else if ((Type)left.type == typeof(bool) && (Type)right.type == typeof(bool))
            {
                if (mathop == logictoken.equal)
                {
                    result.value = (bool)left.value == (bool)right.value;
                }
                else if (mathop == logictoken.not_equal)
                {
                    result.value = (bool)left.value != (bool)right.value;
                }
                else
                {
                    throw new Exception("bool 不支持此运算符");
                }
            }
            else
            {
                result.value = content.environment.GetType(left.type).MathLogic(content, mathop, left.value, right);
            }
            content.OutStack(this);

            return result;
        }