我试图找出Strings数组列表中是否存在一个字符串数组,但是我遇到了一些混乱。这是一些代码:
Dim listResults as List(of String)
Dim listStringArrays as List(of String())
Dim Something as String() = {"Foo", "Bar", "Stuff"}
Dim Otherthing as string() = {"Foo", "Bar", "Stuff"}
listStringArrays.Add(Something)
IF listStringArrays.Contains(Otherthing) then
listResults.Add("True")
Else
listResults.Add("False")
End If
IF listStringArrays(0).Equals(Otherthing) then
listResults.Add("True")
Else
listResults.Add("False")
End If
然后listResults将包含两个" False"。但奇怪的是:
Something(0) = Otherthing(0)
Something(1) = Otherthing(1)
Something(2) = Otherthing(2)
这些都会评估为真。如果Contains不起作用,我怎么能知道我的listStringArrays是否包含Otherthing?
奖金问题:为什么包含在这种情况下不起作用?
答案 0 :(得分:3)
具有相同内容的两个数组仍然不是同一个数组。 Something = Otherthing
是假的。这就是Contains
无效的原因。
您可以使用SequenceEqual
来查看listStringArrays
中的任何数组是否与Otherthing
具有相同的内容。
If listStringArrays.Any(Function(t) t.SequenceEqual(Otherthing)) Then