简体   繁体   English

运算符优先级 c#

[英]Operator precedence c#

I need to control operator precedence in textbox.我需要控制文本框中的运算符优先级。 It should be 17. How to fix it?应该是 17. 如何解决? 在此处输入图片说明

When you sort operators, make sure to provide custom IComparer排序运算符时,请确保提供自定义 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;
    }
}

THis will help, but without seeing all of your code I still assume it cannot handle parenthesies.这会有所帮助,但没有看到您的所有代码,我仍然认为它无法处理括号。 Look into AST building parsers, they will help to create real calculator functions.查看 AST 构建解析器,它们将有助于创建真正的计算器功能。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM