运算符优先级 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 构建解析器,它们将有助于创建真正的计算器函数。
我需要在文本框中控制运算符优先级。应该是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 构建解析器,它们将有助于创建真正的计算器函数。