If语句总是返回true c#

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

当我运行这个语句时,我总是得到true的返回,即使一些bool返回false。有什么解决办法吗

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`
来格式化注释中的代码。