我遇到了导入CSV文件的情况。
它可以包含未知数量的列(我已经考虑过了)。
但似乎当我验证列时,行验证会在处理新行时重置,这会导致最终进程执行,如果单行无效,整个进程应该失败。
bool valid = true;
for (i = 0; i < rows.length; i++){
...
bool rowValid = true;
...
for(colIndex = 0; colIndex < columns.length; colIndex++) {
//Example of a validator
if (string.IsNullOrWhiteSpace(columns[colIndex])){
rowValid |= false;
} else {
//Save value
}
}
if(rowValid){
//Process some more
} else {
//Store information for Invalid Values reporting
}
valid |= rowValid
}
if(valid){
//Save all information imported
} else {
//Show Invalid values and abort save operations
}
当我故意注入无效值以验证是否正在通过虚假信息时,为什么会导致valid = true
的任何建议?
答案 0 :(得分:4)
首先,
rowValid |= false;
什么都不做。您可能应该使用
rowValid = false;
其次,
valid |= rowValid
应该是
valid &= rowValid
第三,如果一件事情无效,你希望整件事情无效,如果检测到错误,你可以在早期返回时短路。
答案 1 :(得分:3)
valid |= rowValid
行应改为valid &= rowValid
。