运算符优先级 c#

Operator precedence c#

我需要在文本框中控制运算符优先级。应该是17,怎么解决?

对运算符进行排序时,请确保提供自定义 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 构建解析器,它们将有助于创建真正的计算器函数。