我有一个模块,它从数据网格中获取值,并将每一行的标签放入字符串数组中。我在另一个模块上调用数组字符串,但我得到的对象没有设置为对象的实例。为什么?我想要完成的是将所有标签组合成字符串或集合数组,并能够在另一个模块上访问它。
'my main module
Public Class myMainModule
Public Shared myArray() As String
......
.......
Public sub doSomething()
Dim myArray As New List(Of String)
For Each row As DataGridViewRow In mydatagrid.Rows
If row.Cells("mycheckbox").Value = True Then
myArray.Add(row.Tag)
End If
Next
End Sub
End Class
'....then i'm calling it from another module:
Public Class myOtherModule
Public sub doit()
For Each value As String In myMainModule.myArray
Debug.Print(value)
Next
End Sub
End Class
您需要在尝试调用Array之前初始化它。目前是Nothing
。
Public Class MyMainModule
Public Shared MyArray() As String
Public Shared Sub DoSomething()
Dim myList As New List(Of String)
For Each row As DataGridViewRow In mydatagrid.Rows
If row.Cells("mycheckbox").Value = True Then
myList.Add(row.Tag)
End If
Next
MyArray = myList.ToArray()
End Sub
End Class
Public Class MyOtherModule
Public Sub Foo()
MyMainModule.DoSomething()
For Each value As String In MyMainModule.MyArray
Debug.Print(value)
Next
End Sub
End Class
另一件事是你需要注意命名。我相信你会感到困惑因为你有一个叫做myArray
的域,但也有一个叫做myArray
的局部变量。您使用的是新创建的局部变量List(Of T)
,而不是数组。