将 NCalc 表达式转换为字符串

Convert NCalc expression to string

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

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

以下代码 returns 错误:

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

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

根据文档 Evaluate returns 一个 object,所以你需要明确地将它转换为 string.

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

或致电ToString():

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

请注意 Evaluate 也可能引发异常,因此转换可能会失败。

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

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' 的内容,而不是字符串。您不能将类型分配给其他类型。

2.

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

这部分告诉您您正在尝试将对象转换为字符串,虽然这是可能的,但您没有告诉编译器您希望如何进行转换。它甚至提出了一个解决方案:“(你错过了演员表吗?)”

有两种方法可以做到:

  1. 显式转换:

    字符串值=(字符串)expressionEv.Evaluate();

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

    字符串值=expressionEv.Evaluate().ToString();

我建议您使用 ToString 方法。如果类型最终不是字符串,则显式转换有引发异常的风险。