例外:无法将类型'Microsoft.SolverFoundation.Services.Term'隐式转换为'bool'

时间:2014-06-02 07:01:43

标签: c# term ms-solver-foundation

我得到了一个例外

  

“无法隐式转换类型   'Microsoft.SolverFoundation.Services.Term'到'bool'“

在以下代码中:

double T1;
Decision T4;

var XX3 = T1 > (T4 - 0.001) ? T4 - 0.001 : T1;

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

您使用返回类型为Microsoft.SolverFoundation.Services.Term的{​​{3}}和subtraction重载(请参阅链接)。然后使用该表达式x作为条件运算符x ? a : b中的第一部分(三个)。但那里需要bool


我建议您使用 greater than ,它似乎是Solver Foundation"条件运算符"。从技术角度来说,C#语言不允许重载?:三元运算符,因为许多二元运算符(如->)都可以重载。

所以改变:

var XX3 = T1 > (T4 - 0.001) /* illegal! */ ? T4 - 0.001 : T1;

成:

var XX3 = Model.If(T1 > T4 - 0.001, T4 - 0.001, T1);

免责声明:我不是Solver Foundation用户。