评估if语句中的条件

时间:2013-12-22 15:44:26

标签: c# if-statement

假设我有这个if语句:

foreach (MyModel m in SomeList)
{
   if (m.pID != SomeValue && (m.xID != 0 && SomeFunction(m.xID) == false)
   {
      return false;
   }
}

我只希望SomeFunction(m.xID) == false评估m.xID != 0是否如此m.xID == 0然后不评估SomeFunction

目前,我将此if语句分解为2个语句,并且我希望看到如何在保留逻辑的同时将这些语句组合成一个语句。这是原作:

foreach (MyModel m in SomeList)
{
   if (m.xID != 0 && SomeFunction(m.xID) == false)
   {
      return false;
   }

   if (m.pID != SomeValue)
   {
      return false;
   }
}

2 个答案:

答案 0 :(得分:5)

您正在寻找此|| Operator (C# Reference)

if ((m.xID != 0 && SomeFunction(m.xID) == false) || (m.pID != SomeValue))
{
  return false;
}

答案 1 :(得分:5)

如果你的循环正在进行,那么我将倾向于完全删除循环。

此外,不要将某些内容与false进行比较,只需使用!运算符即可。

if (SomeList.Any(MyModel m=>m.xID != 0 && !SomeFunction(m.xID) || m.pID != SomeValue))
  return false;