我得到了一个例外
“无法隐式转换类型 'Microsoft.SolverFoundation.Services.Term'到'bool'“
在以下代码中:
double T1;
Decision T4;
var XX3 = T1 > (T4 - 0.001) ? T4 - 0.001 : T1;
如何解决此问题?
答案 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用户。