2

我对 NCalc 有疑问:我正在尝试通过将表达式写入文本框中,然后让程序使用它来对变量求和/相乘,来实现一种将表达式添加到程序中的方法。这是一个例子:

Expression expr = new Expression(textBox3.Text);
        expr.Parameters["a"] = 1;
        expr.Parameters["b"] = textBox2.Text;             
        textBox1.Text = expr.Evaluate().ToString();

我想在 textBox3 中编写表达式,在 textBox2 中编写“b”变量的值,并将结果收集到 textBox1 中。但是,例如,如果我尝试使用:

  • 文本框2 = "3"

  • 文本框3 = "b+a"

结果是“31”而不是 4。怎么了?

4

1 回答 1

1

因为textBox2.Text是 type string,所以您的参数b是字符串“3”而不是数字 3。如果一个参数是字符串,另一个是数字 - NCalc(也适用于字符串)会将数字转换为字符串,就像 C# 本身一样:

string s = "3" + 1; // 31

所以为了解决这个问题,将字符串转换为数字(当然值得首先检查它是否可以转换):

int b;
if (int.TryParse(textBox2.Text, out b)) {
    Expression expr = new Expression(textBox3.Text);
    expr.Parameters["a"] = 1;
    expr.Parameters["b"] = b;      
    textBox1.Text = expr.Evaluate().ToString();
}
于 2018-04-28T12:19:35.753 回答