将 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?)
这部分告诉您您正在尝试将对象转换为字符串,虽然这是可能的,但您没有告诉编译器您希望如何进行转换。它甚至提出了一个解决方案:“(你错过了演员表吗?)”
有两种方法可以做到:
显式转换:
字符串值=(字符串)expressionEv.Evaluate();
调用所有对象都有的ToString()方法(继承自基础对象class):
字符串值=expressionEv.Evaluate().ToString();
我建议您使用 ToString 方法。如果类型最终不是字符串,则显式转换有引发异常的风险。
我必须使用 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?)
这部分告诉您您正在尝试将对象转换为字符串,虽然这是可能的,但您没有告诉编译器您希望如何进行转换。它甚至提出了一个解决方案:“(你错过了演员表吗?)”
有两种方法可以做到:
显式转换:
字符串值=(字符串)expressionEv.Evaluate();
调用所有对象都有的ToString()方法(继承自基础对象class):
字符串值=expressionEv.Evaluate().ToString();
我建议您使用 ToString 方法。如果类型最终不是字符串,则显式转换有引发异常的风险。