-1

我遇到了一个例外

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

在以下代码中:

double T1;
Decision T4;

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

如何解决这个问题?

4

1 回答 1

0

您使用减法的重载,并且大于具有返回类型的重载Microsoft.SolverFoundation.Services.Term(请参阅链接)。然后将该表达式x用作条件运算符中的第一部分(三个)x ? a : b。但是bool那里需要 a 。


我建议你Model.If改用,它似乎是 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 用户。

于 2014-06-02T07:10:49.733 回答