Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 创建类的实例时出错_Vb.net_Oop - Fatal编程技术网

Vb.net 创建类的实例时出错

Vb.net 创建类的实例时出错,vb.net,oop,Vb.net,Oop,我试图为arrayList分配一个类的实例,但它给出了以下错误 Object reference not set to an instance of an object. 这是我分配它的代码 Public memberList As ArrayList Public Sub LoadUser() Dim userId As Integer = 0 Dim userData As Data.DataTable = oExecuteSimpleQuery_DT("QA", "SELECT

我试图为arrayList分配一个类的实例,但它给出了以下错误

Object reference not set to an instance of an object.
这是我分配它的代码

Public memberList As ArrayList

Public Sub LoadUser()
Dim userId As Integer = 0
    Dim userData As Data.DataTable = oExecuteSimpleQuery_DT("QA", "SELECT * FROM Member")
    If userData IsNot Nothing Then
        For Each user As Data.DataRow In userData.Rows
            If memberList(userId) Is Nothing Then
                memberList(userId) = 1
            End If
            memberList(userId) = New clsMember(user("UserID"), user("Firstname"), user("Secondname"), user("Username"), user("Password"), user("Email"), user("Rights"))
            userId += 1
        Next
    End If
End Sub
试试这个:

Public memberList as New List(Of clsMember)


Public Sub LoadUser()
 Dim userId As Integer = 1
 Dim userData As Data.DataTable = oExecuteSimpleQuery_DT("QA", "SELECT * FROM Member")
 If userData IsNot Nothing Then
    For Each user As Data.DataRow In userData.Rows
        memberList.Add(New clsMember(user("UserID"), user("Firstname"), user("Secondname"), user("Username"), user("Password"), user("Email"), user("Rights"))
        userId += 1
    Next
 End If
End Sub
试试这个:

Public memberList as New List(Of clsMember)


Public Sub LoadUser()
 Dim userId As Integer = 1
 Dim userData As Data.DataTable = oExecuteSimpleQuery_DT("QA", "SELECT * FROM Member")
 If userData IsNot Nothing Then
    For Each user As Data.DataRow In userData.Rows
        memberList.Add(New clsMember(user("UserID"), user("Firstname"), user("Secondname"), user("Username"), user("Password"), user("Email"), user("Rights"))
        userId += 1
    Next
 End If
End Sub

在问题中显示的代码中,您确实声明了
memberList
变量,但没有创建实例。要解决此错误,请将第一行更改为:

Public memberList As New ArrayList()
两个侧节点:

  • 不要使用
    ArrayList
    ,而是查看。它提供几乎相同的功能,但属于强类型
  • NullReferenceException
    是一个值得理解的常见错误。有关原因和修复方法的详细信息,请参见此

在问题中显示的代码中,您确实声明了
memberList
变量,但没有创建实例。要解决此错误,请将第一行更改为:

Public memberList As New ArrayList()
两个侧节点:

  • 不要使用
    ArrayList
    ,而是查看。它提供几乎相同的功能,但属于强类型
  • NullReferenceException
    是一个值得理解的常见错误。有关原因和修复方法的详细信息,请参见此

虽然现在出现了另一个错误“索引超出范围”,但感谢似乎起了作用。必须为非负数且小于集合的大小。参数名称:index‘uou循环通过的数据行导致索引超出范围。如果它是一个网格(我怀疑它是),那么行的编号是从0开始的,而不是从1开始的(您需要考虑标题行)。因此,在网格中循环(即索引为integer=0到[您在这里处理吗]下一步。这应该可以解决这个问题。虽然现在出现了另一个错误“Index超出范围。必须是非负的并且小于集合的大小。参数名称:Index”uou循环通过的数据行导致索引超出范围。如果是网格(我怀疑是这样)然后,行从0开始编号,而不是从1开始编号(您需要考虑标题行)。因此,在网格中循环(即索引为integer=0,然后循环到[do you processing here])。这应该可以解决该问题