使用NCalc将用户输入评估为字符串中的参数

时间:2012-10-14 23:47:12

标签: c# console-application

我想提示用户输入一个数字,然后使用NCalc来评估和解决公式

string a = Console.ReadKey().ToString();
Expression e = new Expression("2 + [a] * 5"); 
object x = e.Evaluate();
Console.WriteLine("{0}", x.ToString());
Console.ReadKey();

这给了我错误,我做错了什么?

1 个答案:

答案 0 :(得分:3)

您需要传递文字值a的参数;

string a = Console.ReadKey().KeyChar.ToString();     // add KeyChar
Expression e = new Expression("2 + [a] * 5"); 
e.Parameters["a"] = a;                               // don't forget this line
object x = e.Evaluate();
Console.WriteLine("{0}", x.ToString());
Console.ReadKey();

还有一件事,

string a = Console.ReadKey().ToString();
// yields a string value: System.ConsoleKeyInfo 
// and not the number you typed.

使用

更好
string a = Console.ReadLine()
// or
string a = Console.ReadKey().KeyChar.ToString();     // KeyChar