将 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?)
有没有办法将其转换为字符串?或者也许其他方式?提前感谢!;)
您的错误消息几乎告诉您需要知道的所有信息:
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?)
这部分告诉您您正在尝试将对象转换为字符串,虽然有可能,但您尚未告诉编译器要如何执行此操作。 它甚至提出了一个解决方案:"(你错过了演员吗?
有两种方法可以做到这一点:
显式转换:
字符串值 = (string(表达式Ev.Evaluate((;
调用所有对象都具有的 ToString(( 方法(继承自基对象类(:
字符串值 = 表达式评估((。ToString((;
我建议你使用ToString方法。 如果类型最终不是字符串,则显式强制转换存在引发异常的风险。
根据文档Evaluate
返回一个object
,所以需要显式地将其强制转换为string
。
string value = (string)expressionEv.Evaluate();
或致电ToString()
:
string value = expressionEv.Evaluate().ToString();
请注意,Evaluate
也可能引发异常,因此强制转换可能会失败。