Vb.net 添加(var)覆盖列表中以前的项

Vb.net 添加(var)覆盖列表中以前的项,vb.net,Vb.net,每次按下按钮时,您应该会将一位客户添加到您的列表中。但它只是覆盖我以前的值,不更新列表 这正是他们在我的书中所做的,但我不知道为什么下一个变量没有添加到列表中 Private Sub btnOpslaan_Click(sender As Object, e As EventArgs) Handles btnOpslaan.Click Dim klantenlijst As New List(Of Klant) Dim nieuwe_klant As New Klant D

每次按下按钮时,您应该会将一位客户添加到您的列表中。但它只是覆盖我以前的值,不更新列表

这正是他们在我的书中所做的,但我不知道为什么下一个变量没有添加到列表中

Private Sub btnOpslaan_Click(sender As Object, e As EventArgs) Handles btnOpslaan.Click
    Dim klantenlijst As New List(Of Klant)
    Dim nieuwe_klant As New Klant
    Dim path As String = IO.Path.GetTempFileName()

    nieuwe_klant.Naam = txtNaam.Text
    nieuwe_klant.Straat = txtStraat.Text
    nieuwe_klant.Postcode = txtPostcode.Text
    nieuwe_klant.Gemeente = txtGemeente.Text
    nieuwe_klant.Telefoon = txtTelefoon.Text
    nieuwe_klant.Email = txtEmail.Text


    If chkHardware.Checked = True Then
        nieuwe_klant.Hardware = True
    End If
    If chkInternet.Checked = True Then
        nieuwe_klant.Internet = True
    End If
    If chkMultimedia.Checked = True Then
        nieuwe_klant.Multimedia = True

    End If
    If chkSoftware.Checked = True Then
        nieuwe_klant.Software = True
    End If
    klantenlijst.Add(nieuwe_klant)
    MsgBox(klantenlijst.Count)

End Sub
我的班级“Klant”


End Class

这里的问题是,每次单击,您都会声明一个新的“Klantenelijst”,并将其私有化。只需在单击之外声明它,您将获得所需的结果:

 Dim klantenlijst As New List(Of Klant)
 Private Sub btnOpslaan_Click(sender As Object, e As EventArgs) Handles btnOpslaan.Click
    Dim nieuwe_klant As New Klant
    Dim path As String = IO.Path.GetTempFileName()

    nieuwe_klant.Naam = txtNaam.Text


    //continue your code...


    klantenlijst.Add(nieuwe_klant)
    MsgBox(klantenlijst.Count)

每次单击按钮时,都会创建一个新列表:

然后在列表中只添加一项:

klantenlijst.Add(nieuwe_klant)
因此,该列表将只包含一项

相反,创建一个类级列表并添加到该列表中。因此,将这一行放在班级层面:

Dim klantenlijst As New List(Of Klant)
然后,在类的整个实例中都可以使用相同的列表。需要注意的几点:

  • 如果没有更多的上下文,您甚至可能会寻找比类更大的范围。有很多地方可以存储信息,类级变量只是方法级变量的下一个更高的作用域
  • 如果您使用的是ASP.NET,那么类的生命周期非常短(每个请求),并且不会在请求之间持久化。在这种情况下,您可能希望将数据存储在其他地方,可能是在会话状态或数据库中

  • 这么愚蠢的错误,而我的老师和我正在寻找一个小时。谢谢你,伙计!
    klantenlijst.Add(nieuwe_klant)
    
    Dim klantenlijst As New List(Of Klant)