将 NCalc 表达式转换为字符串

本文关键字:字符串 转换 表达式 NCalc | 更新日期: 2023-09-27 18:34:47

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

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

将 NCalc 表达式转换为字符串

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

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"而不是字符串的东西。 不能将类型分配给其他类型。

阿拉伯数字。

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

这部分告诉您您正在尝试将对象转换为字符串,虽然有可能,但您尚未告诉编译器要如何执行此操作。 它甚至提出了一个解决方案:"(你错过了演员吗?

有两种方法可以做到这一点:

  1. 显式转换:

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

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

    字符串值 = 表达式评估((。ToString((;

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

根据文档Evaluate返回一个object,所以需要显式地将其强制转换为string

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

或致电ToString()

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

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