如何判断数组中是否有某元素
本帖最后由 bcrun 于 2013-08-04 11:36:04 编辑
Sub A()
Dim vArrayA = New String("A", "B", "C")
Dim vMatch As Predicate(Of String)
Dim B As Boolean
B = Array.Exists(vArrayA, vMatch)
End Sub
总是提示错误:
错误13无法从这些实参推断方法“Public Shared Function Exists(Of T)(array() As T, match As System.Predicate(Of T)) As Boolean”中类型形参的数据类型。显式指定数据类型可更正此错误。
该如何处理呢?
[解决办法]
哈哈,现在意识到.net的门槛还是有点高了吧。其实这东西我找了半天,包括msdn lib,都没找到够详细的资料。不过,参考帮助还是可以有所得的。
首先,你第一句把vArrayA定义为一个String可能就是搞错了。参考一下我的代码
Sub A()
'Dim vArrayA = New String("A", "B", "C")
Dim vArrayA() as String= {"A", "B", "C"}
Dim vMatch As Predicate(Of String)
Dim B As Boolean
vMatch= AddressOf StringMatch
B = Array.Exists(vArrayA, vMatch)
listBox1.Items.Add( B.ToString())
End Sub
Sub TestExist()
Dim dinosaurs() As String = {"Compsognathus", _
"Amargasaurus", "Oviraptor", "Velociraptor", _
"Deinonychus", "Dilophosaurus", "Gallimimus", _
"Triceratops"}
Dim B As Boolean
B = CType(dinosaurs, IList).Contains("Gallimimus")
listBox1.Items.Add( B.ToString())
End Sub
Sub MainFormLoad(sender As Object, e As EventArgs)
A
TestExist
End Sub
Private Function StringMatch(s As String) As Boolean
' return s == II[i].ToString()
Return s = "B"
End Function
[解决办法]
VB.NET可以使用Contains函数:
Dim data() As String = { "A", "B", "C" }
If data.Contains("B") Then
MsgBox "包含B"
End If