运算符优先级c#

时间:2016-04-17 20:52:23

标签: c# mathematical-expressions

我需要在文本框中控制运算符优先级。它应该是17.如何解决? enter image description here

1 个答案:

答案 0 :(得分:0)

对运算符进行排序时,请确保提供自定义IComparer

void Main()
{
var comparer = new OperatorComparer();
    var operators = new[] { '+', '-', '*', '/' };
    Array.Sort(operators,comparer);

}
public class OperatorComparer : IComparer
{
    public int Compare(object x, object y)
    {
        var xv = (char)x;
        var yv = (char)y;
        if (xv == '*' || xv == '/')
        {
            if(yv == '*' || yv == '/')
                return 0;
            else 
                return -1;
        }
        else if (yv == '+' || yv == '-')
            return 0;
        return 1;
    }
}

这会有所帮助,但是如果没有看到所有代码,我仍然认为它无法处理父母身份。查看AST构建解析器,它们将有助于创建真正的计算器函数。