减少if语句本身

时间:2015-06-10 08:50:18

标签: c# if-statement

这是我目前的if语句:

   if (excel_getValue("A" + i) == "" && 
    excel_getValue("A" + (i + 1)) == "" && 
    excel_getValue("A" + (i + 2)) == "" && 
    excel_getValue("A" + (i + 3)) == "" && 
    excel_getValue("A" + (i + 4)) == "" && 
    excel_getValue("A" + (i + 5)) == "" && 
    excel_getValue("A" + (i + 6)) == "" && 
    excel_getValue("A" + (i + 7)) == "" && 
    excel_getValue("A" + (i + 8)) == "")

无论如何,我可以减少这种说法吗?我应该在for循环中构建这个if语句吗?

顺便说一句,这个if语句如果已经在forloop中它使用了forloop的i

4 个答案:

答案 0 :(得分:19)

您可以使用All

if(Enumerable.Range(0, 9).All(c => excel_getValue("A" + (i + c)) == "")) {
}

答案 1 :(得分:2)

有一种简单的方法可以减少" (至少"美化")并使用for循环...但这不会更高效,所以你选择:

bool do = true;
for(var j = 0; j < 9; j++) { 
   if (excel_getValue("A" + (i+j)) != "") {
     do = false;
     break;
   }
}
if(do) { /* whatever */ }

或使用Linq:

if(Enumerable.Range(0, 9).All(x => excel_getValue("A" + (i + x)) == "")) { /* whatever */ }

这可能很容易减少,但我想重点是它应该更漂亮&#34;而不是&#34;更好&#34;或者&#34;复杂&#34;。在性能方面没有什么比原来的更好: - )

答案 2 :(得分:0)

是的,在这种情况下,for循环是简化代码的好方法。类似的东西:

   bool result = true;
   for(int j = 0; j < max; j++)
   {
      result = result && excel_getValue("A" + (i + j)) == "";
   }

答案 3 :(得分:0)

您可以尝试这样的事情:

if (Enumerable.Range(0, 8).All(p => excel_getValue("A" + (i + p)) == ""))