If语句总是返回true c#
当我运行这个语句时,我总是得到true的返回,即使一些bool返回false。有什么解决办法吗If语句总是返回true c#,c#,if-statement,boolean,C#,If Statement,Boolean,当我运行这个语句时,我总是得到true的返回,即使一些bool返回false。有什么解决办法吗 public bool Enabled() { foreach (LinkIn link in linksIn) { if (link.source.amount < link.amount) { return false; } } //Not checking
public bool Enabled() {
foreach (LinkIn link in linksIn) {
if (link.source.amount < link.amount) {
return false;
}
}
//Not checking capacity correctly
foreach (LinkOut link in linksOut) {
if (link.target.Limited()
&& link.target.capacity < link.amount
&& link.target.amount + link.amount > link.target.capacity)
{
return false;
}
}
return true;
}
public bool Enabled(){
foreach(LinkIn-LinkIn-linksIn){
如果(link.source.amountlink.target.capacity)
{
返回false;
}
}
返回true;
}
link.target.Limited()
只是检查一个目标是否有容量。我想你想要的是:
如果目标是Limited(),则如果我们的容量大于容量,或者如果目标中没有足够的空间来添加我们的数量,则失败
因此,这将使条件:
if (link.target.Limited()
&& (link.target.capacity < link.amount
|| link.target.amount + link.amount > link.target.capacity))
if(link.target.Limited()
&&(link.target.capacitylink.target.capacity)
为了更加对称,通过交换第三个表达式的LHS和RHS,可以将其写成:
if (link.target.Limited()
&& (link.target.capacity < link.amount
|| link.target.capacity < link.target.amount + link.amount))
if(link.target.Limited()
&&(link.target.capacity
现在,我们可以进一步看到link.target.capacity
为真,当且仅当link.target.capacity
也为真,因此我们可以简化为:
if (link.target.Limited()
&& link.target.capacity < link.target.amount + link.amount)
if(link.target.Limited()
&&link.target.capacity
您是否尝试过使用调试器单步执行代码?您正在使用&因此所有条件都必须为true才能返回false如果(link.target.Limited()&&&(link.target.capacity,但是没有一个规范,我只是猜测。“如果目标是Limited(),则如果我们大于容量,或者如果目标中没有足够的空间来添加我们的数量,则失败。”。这意味着如果(link.target.Limited()&&link.target.capacity
可能就足够了。(顺便说一句,如果这回答了这个问题,我会发布一个答案)顺便说一句,你的声明“我总是得到一个真的返回,即使一些布尔值返回假”是程序所说的;在编写代码时,对于至少一次迭代,所有布尔表达式都必须为true。您可能被否决了,因为您的问题没有明确说明。顺便说一句,您必须使用backticks`my code`
来格式化注释中的代码。