这是我目前的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
答案 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)) == ""))