将NCalc表达式转换为字符串

时间:2016-02-16 00:22:48

标签: c# ncalc

我必须使用NCalc计算字符串输入,但我想将它(结果)保存为字符串。我该怎么做?

Expression expressionEv = new Expression(expressionProccessed);
string value = expressionEv.Evaluate ();

以下代码返回错误:

Error CS0266: Cannot implicitly convert type `object' to `string'. An explicit conversion exists (are you missing a cast?)

有没有办法将其转换为字符串?或者其他方式?提前致谢! ;)

2 个答案:

答案 0 :(得分:1)

根据文档Evaluate返回object,因此您需要明确地将其转换为string

string value = (string)expressionEv.Evaluate();

或致电ToString()

string value = expressionEv.Evaluate().ToString();

请注意Evaluate也可以抛出异常,因此强制转换可能会失败。

答案 1 :(得分:1)

您的错误消息会告诉您几乎所有需要知道的内容:

Error CS0266: Cannot implicitly convert type `object' to `string'. An explicit conversion exists (are you missing a cast?)

让我们看看这个部分。

1

`Cannot implicitly convert type `object' to `string'.`

这部分告诉你对expressionEv.Evaluate()的调用;正在返回一个类型为' object'而不是string的东西。您无法将类型分配给其他类型。

2

An explicit conversion exists (are you missing a cast?)

这部分告诉您正在尝试将对象转换为字符串,尽管可能,但您还没有告诉编译器您希望如何执行此操作。它甚至建议一个解决方案:"(你是否错过演员?)"

有两种方法可以做到:

  1. 明确投射:

    string value =(string)expressionEv.Evaluate();

  2. 调用所有对象都具有的ToString()方法(继承自基础对象类):

    string value = expressionEv.Evaluate()。ToString();

  3. 我建议你使用ToString方法。如果类型最终不是字符串,那么显式强制转换可能会抛出异常。