0

我有导入 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关于为什么当我故意注入无效值以验证错误正在通过时,为什么会导致这种情况的任何建议?

4

2 回答 2

4

首先,

rowValid |= false;

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

rowValid = false;

第二,

valid |= rowValid

应该

valid &= rowValid

第三,考虑到如果一件事情无效,您希望整个事情都无效,如果检测到错误,您可以短路并提前返回。

于 2013-07-03T12:57:37.357 回答
3

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

于 2013-07-03T12:55:00.127 回答