我遇到了一个例外
“无法将类型 'Microsoft.SolverFoundation.Services.Term' 隐式转换为 'bool'”
在以下代码中:
double T1;
Decision T4;
var XX3 = T1 > (T4 - 0.001) ? T4 - 0.001 : T1;
如何解决这个问题?
我遇到了一个例外
“无法将类型 'Microsoft.SolverFoundation.Services.Term' 隐式转换为 'bool'”
在以下代码中:
double T1;
Decision T4;
var XX3 = T1 > (T4 - 0.001) ? T4 - 0.001 : T1;
如何解决这个问题?
您使用减法的重载,并且大于具有返回类型的重载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 用户。