减少if语句本身
本文关键字:语句 if 减少 | 更新日期: 2023-09-27 17:54:45
这是我现在的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位
您可以使用All
:
if(Enumerable.Range(0, 9).All(c => excel_getValue("A" + (i + c)) == "")) {
}
有一个简单的方法来"减少"(至少"美化")与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 */ }
这可能很容易减少,但我想关键是它应该"更漂亮",而不是"更好"或"复杂"。就性能而言,没有什么能比得上你原来的那个:-)
是的,在这种情况下,for
循环是简化代码的好方法。比如:
bool result = true;
for(int j = 0; j < max; j++)
{
result = result && excel_getValue("A" + (i + j)) == "";
}
你可以尝试这样做:
if (Enumerable.Range(0, 8).All(p => excel_getValue("A" + (i + p)) == ""))