布尔标志虚假可持续性

时间:2013-07-03 12:53:16

标签: c# validation csv import

我遇到了导入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的任何建议?

2 个答案:

答案 0 :(得分:4)

首先,

rowValid |= false;

什么都不做。您可能应该使用

rowValid = false;

其次,

valid |= rowValid

应该是

valid &= rowValid

第三,如果一件事情无效,你希望整件事情无效,如果检测到错误,你可以在早期返回时短路。

答案 1 :(得分:3)

valid |= rowValid行应改为valid &= rowValid