【发布时间】:2023-04-10 00:31:01
【问题描述】:
我在 VB (Visual Studio 2012) 中遇到了这个 SearchButton 代码的问题:
Form1.VB中的这段代码:
Private Sub SearchButton_Click(sender As Object, e As EventArgs) Handles SearchButton.Click
Dim results As Artist
results = Array.SearchArray(artistArray(), SearchTextBox.Text)
End Sub
我收到一个错误消息,artistArray 由于其保护级别而无法访问。
我是 VB 新手,所以我确定这是我做错了,但我找不到。
我已检查拼写、可见性 (Public) 等。
当前的array.vb:
Public Class Array
Public artistArray() As Artist
Public searchResults(artistArray.Length) As Artist
Dim searchString As String
Public Function SearchArray(ByVal artistArray(), searchString) As Artist()
Dim x As Integer ' artist index variable for loop
Dim index As Integer = 0 ' index for results
For x = 0 To artistArray.GetUpperBound(0)
Dim temp As Artist = artistArray(x)
If temp.Name.ToLower().Contains(searchString.ToLower()) Then
searchResults(index) = artistArray(x) ' if search hit then add current item to result array
index += 1 ' and incr. result index
End If
Next
ReDim Preserve searchResults(index)
Return searchResults
End Function
' ...
End Class
【问题讨论】:
-
你写的代码没有意义。
Array类上没有方法SearchArray。如果你正在尝试编写扩展方法,那么这也是不正确的。 -
可能是因为'Public artistArray() As Artist'在array.vb中,你有没有尝试过:results = Array.SearchArray(array.artistArray(), SearchTextBox.Text)
-
System.Array和你的Array有冲突吗?尝试重命名你的类,使其更能描述它所包含的内容。示例:Class ArtistArray Inherits Collection(Of Artist) -
由于
SearchArray不是静态的,所以你的Array.SearchArray(...)会导致编译错误---你确定代码没问题?顺便提一句。类的名称“数组”是个坏主意 -
您的函数返回
Artist(),并且您将结果分配给类型Artist。注意到区别了吗?