1

我必须使用 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?)

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

4

2 回答 2

1

根据文档Evaluate返回 an object,因此您需要将其显式转换为string.

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

或致电ToString()

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

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

于 2016-02-16T00:32:13.023 回答
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(); 的调用 正在返回一个具有“对象”类型的东西,而不是字符串。您不能将类型分配给其他类型。

2.

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

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

有两种方法可以做到:

  1. 显式转换:

    字符串值 = (字符串)表达式Ev.Evaluate();

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

    字符串值 = 表达式Ev.Evaluate().ToString();

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

于 2016-02-16T00:32:50.723 回答