布尔标志虚假可持续性
本文关键字:可持续性 标志 布尔 | 更新日期: 2023-09-27 18:20:47
我有一种导入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
}
当我故意注入无效值以验证是否通过了false时,为什么会导致valid = true
?有什么建议吗?
首先,
rowValid |= false;
什么都不做。你可能应该使用
rowValid = false;
其次,
valid |= rowValid
应该是
valid &= rowValid
第三,如果有一件事无效,那么你希望整个事情都无效,如果检测到错误,你可能会提前返回。
valid |= rowValid
行应改为valid &= rowValid
。