C# 布尔可持续性

C# 布尔可持续性,c#,validation,csv,import,C#,Validation,Csv,Import,我遇到了导入CSV文件的情况 它可以有未知数量的列(我已经说明了) 但是,当我验证列时,行验证似乎会在处理任何新行时重置,这会导致执行最终进程,如果一行无效,整个进程就会失败 工艺设计: bool valid=true; 对于(i=0;i

我遇到了导入CSV文件的情况

它可以有未知数量的列(我已经说明了)

但是,当我验证列时,行验证似乎会在处理任何新行时重置,这会导致执行最终进程,如果一行无效,整个进程就会失败

工艺设计:
bool valid=true;
对于(i=0;i

当我故意注入无效值以验证错误是否被传递时,这将导致
valid=true
valid |=rowValid
行应该是
valid&=rowValid

首先

rowValid |= false;
什么都不做。你可能应该使用

rowValid = false;
第二,

valid |= rowValid
应该是

valid &= rowValid

第三,如果有一件事是无效的,您希望整个事情都是无效的,那么如果检测到错误,您可以通过提前返回来短路。

rowValid |=false应为
rowValid=false这是和和之间的基本区别。如果
rowValid
为true,则前者将
valid
设置为true,否则不进行更改。如果
rowValid
为false,则后者将
valid
设置为false,否则不进行更改。
valid |=rowValid
等于
valid=valid | rowValid
。如果
valid
是真的,那么你就永远不会给它赋值为假-
true | false
总是真的。@Medinoc好的,我通常是一个VB开发人员,涉猎过C#,所以有一个更有经验的C#开发人员建议我赋值。@GoldBishop:在帖子上写“-1”,然后帮我把它贴在另一个开发人员身上好吗?-)<代码>行有效|=假–这是一个无意义的语句。如果(!rowValid)valid=false,为什么不干脆
如果(string.IsNullOrWhiteSpace(columns[colIndex]){rowValid=false;}
?是的,但他们希望完整报告而不是增量报告。因此,我存储了一组行和无效列,然后将它们输出到一个验证摘要(如control)中,“它们”是明智的。当您更正应用程序显示的所有错误,并且只在出现更多错误时重新运行该过程时,您会感到愤怒。@GoldBishop啊,好的,那么您就不能提前返回了。公平的恩努夫!:)是的,是的。不幸的是,我的验证摘要都在一个标签中。因为它是一个文件上传,所以没有很多字段可以放置customvalidator,然后将validationsummary控件放到其中。但是哦,好吧,他们提出了要求,我完全同意。我是一个精灵,只能许下3个愿望,然后他们得到了我所给予的;)
valid &= rowValid