如何解决Arraylist中的错误

时间:2015-10-21 15:55:20

标签: c#

if (!(errorlist.Contains(-1)) || !(errorlist.Contains(1))) break;

我无法理解为什么即使错误列表在列表中包含1,此代码也会突破循环。调试时,errorlist[0] = 1和其他索引为0。

可能是什么解决方案?

4 个答案:

答案 0 :(得分:3)

您需要Public Sub SetValue(ByRef Key As String, _ Optional ByRef ws As Worksheet = Nothing) 'Make sure we have the object If ws Is Nothing Then Set ws = ThisWorkbook.Sheets(SheetName) End If End Sub 而不是&&。 (如果你需要同时在列表中同时出现这两个)

在你的情况下,第一个条件成功。

您的列表中不包含||,因此条件-1会中断。

修改

如果您仍需要保留if(!errorlist.Contains(-1)),则可以执行类似

的操作

||

如果您无法使用if(!errorList.Any((p)=> { return (p == 1 || p== -1);})),您仍然可以将其定义为

Any

答案 1 :(得分:1)

如果我理解你的话

  

为什么这个代码断开循环,即使错误列表包含1 in   列表

当且仅当errorlist不包含1-1时,您才想要破解:

  if (!((errorlist.Contains(-1)) || (errorlist.Contains(1)))) break;

答案 2 :(得分:0)

您的条件是检查列表是否包含两者 -1 AND 1.我怀疑您想要

if (!(errorlist.Contains(-1)) && !(errorlist.Contains(1))) break;

if (!(errorlist.Contains(-1) || errorlist.Contains(1))) break;

答案 3 :(得分:0)

||表示OR。 因此,如下所示:

if(errorList不包含-1)或(errorList不包含1)然后中断。

正如您所见,errorList因此必须包含-1 AND 1才能中断。

如果您不想在任何一个存在时中断,请将||(或)更改为&&(AND):

if (!(errorlist.Contains(-1)) && !(errorlist.Contains(1))) break;

要实现此目的,您可以执行以下操作:

if (!(errorlist.Contains(-1) || errorlist.Contains(1))) break;

现在读到:

如果不是则中断(errorList包含-1或者errorList包含1)。在应用NOT之前,请注意未在整个表达式前面移动的更改以及OR部分。

这似乎是你想要建模的。