我必须使用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?)
有没有办法将其转换为字符串?或者其他方式?提前致谢! ;)
答案 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?)
这部分告诉您正在尝试将对象转换为字符串,尽管可能,但您还没有告诉编译器您希望如何执行此操作。它甚至建议一个解决方案:"(你是否错过演员?)"
有两种方法可以做到:
明确投射:
string value =(string)expressionEv.Evaluate();
调用所有对象都具有的ToString()方法(继承自基础对象类):
string value = expressionEv.Evaluate()。ToString();
我建议你使用ToString方法。如果类型最终不是字符串,那么显式强制转换可能会抛出异常。