Vb.net 遍历类对象-Visual basic

Vb.net 遍历类对象-Visual basic,vb.net,class,loops,object,Vb.net,Class,Loops,Object,如何在vb.net中循环遍历类的所有对象,而不是执行以下操作。我想在代码中初始化我的类对象(这是一个示例),然后通过它们而不是底部的代码进行for-each循环 'Angiv 1. saldo, 2. Navn, 3. CPR nummer, 4. pinkode Dim Kunde1 As New Kunde(1010, "Mads Peter Petersen", "010190-0000", 1111) Dim Kunde2 As New Kunde(2020, "John Ped

如何在vb.net中循环遍历类的所有对象,而不是执行以下操作。我想在代码中初始化我的类对象(这是一个示例),然后通过它们而不是底部的代码进行for-each循环

    'Angiv 1. saldo, 2. Navn, 3. CPR nummer, 4. pinkode
Dim Kunde1 As New Kunde(1010, "Mads Peter Petersen", "010190-0000", 1111)
Dim Kunde2 As New Kunde(2020, "John Pedersen", "010190-0001", 2222)
Dim Kunde3 As New Kunde(3030, "Flemming Farsø", "010190-0002", 3333)
Dim Kunde4 As New Kunde(4040, "Didrich Rich", "010190-0003", 4444)
Dim Kunde5 As New Kunde(5050, "Tobias Larsen", "010190-0004", 5555)
Dim aktivKunde As Kunde


Private Sub Main()
    btn100.Enabled = False
    btn200.Enabled = False
    btn500.Enabled = False
    btn1000.Enabled = False
    btnGodkend.Enabled = False
    btnVisbevaegelser.Enabled = False
End Sub


Private Sub btnTjek_Click(sender As Object, e As EventArgs) Handles btnTjek.Click


    If Kunde1.Tjek(CInt(txtPinkode.Text), CInt(txtCpr.Text.Substring(txtCpr.Text.Length - 4))) Then
        txtSaldo.Text = Kunde1.Saldo
        txtNavn.Text = Kunde1.Navn
        aktivKunde = Kunde1
        AktiverKnapper()


    ElseIf Kunde2.Tjek(CInt(txtPinkode.Text), CInt(txtCpr.Text.Substring(txtCpr.Text.Length - 4))) Then
        txtSaldo.Text = Kunde2.Saldo
        txtNavn.Text = Kunde2.Navn
        aktivKunde = Kunde2
        AktiverKnapper()


    ElseIf Kunde3.Tjek(CInt(txtPinkode.Text), CInt(txtCpr.Text.Substring(txtCpr.Text.Length - 4))) Then
        txtSaldo.Text = Kunde3.Saldo
        txtNavn.Text = Kunde3.Navn
        aktivKunde = Kunde3
        AktiverKnapper()


    ElseIf Kunde4.Tjek(CInt(txtPinkode.Text), CInt(txtCpr.Text.Substring(txtCpr.Text.Length - 4))) Then
        txtSaldo.Text = Kunde4.Saldo
        txtNavn.Text = Kunde4.Navn
        aktivKunde = Kunde4
        AktiverKnapper()


    ElseIf Kunde5.Tjek(CInt(txtPinkode.Text), CInt(txtCpr.Text.Substring(txtCpr.Text.Length - 4))) Then
        txtSaldo.Text = Kunde5.Saldo
        txtNavn.Text = Kunde5.Navn
        aktivKunde = Kunde5
        AktiverKnapper()

    Else : MessageBox.Show("Der var desværre ingen kunder med dette CPR-nummer & pinkode", "Forkert pinkode eller CPR-nummer")
    End If

最简单的方法是使用集合/列表:

' declare the list var AND create an instance of it (these are objects)
Private myKunde As New List(of Kunde)

 ...
myKunde.Add(New Kunde(1010, "Mads Peter Petersen", "010190-0000", 1111))
myKunde.Add(New Kunde(2020, "John Pedersen", "010190-0001", 2222))
... etc
要循环:

For Each k As Kunde In myKunde 
   Console.WriteLine(k.Name)           ' ??
Next
要引用一个特定的:

Console.WriteLine(myKunde(1).Name)   
' remove Kunde John:
myKunde.RemoveAt(1)

' start over:
myKunde.Clear 
在列表框中显示列表的全部内容:

lbKunde.DataSource = myKunde
如果Kunde覆盖了
ToString()
,则每个项目都会显示该内容

它们就像一个数组,只是你不需要知道提前制作的规模有多大,只需向其中添加项目即可。
List(of T)
还有很多其他方法,比如
Sort
Reverse
,您还可以对其使用扩展方法并查询集合

单击按钮(无法翻译它所说的内容)可能类似于:

Sub btnClick(....
  Dim Kindex As Integer

  ' this might be able to be reduced more, I dont know what they are
  ' a LISTBOX would certainly get rid of it
  If Kunde1.Tjek Then
      Kindex = 1
  ElseIf Kunde2.Tjek
      Kindex = 2
  ...

  DisplayKunde(KIndex)
  ...

Private Sub DisplayKinde(ndx As integer)
    ' display desired Kunde to txt controls
    txtBox1.Text = myKunde(ndx).Name      ' ? no idea whats in Kinde
    txtBox2.Text = myKunde(ndx).Foo
    txtBox3.Text = myKunde(ndx).Bar
    ...
End Sub

在我的for-each循环中,我不能写“.在myKunde中”?它说它没有被声明?代码的第一行声明并创建一个实例;如果这是表单中的代码,请确保它在任何子类之外,我不是这样做吗?但是它不像以前那样工作了?如果kundeNavn.Tjek(CInt(txtPinkode.Text)、CInt(txtCpr.Text.Substring(txtCpr.Text.Length-4)),则将kundeNavn.Text=kundeNavn.Saldo txtNavn.Text=kundeNavn.Navn aktivKunde=kundeNavn AktiverKnapper()其他:MessageBox.Show(“Der var desværre ingen kunder med dette CPR nummer&pinkode”,“Forkert pinkode eller CPR nummer”)结束如果抱歉,我无法阅读/理解这些内容,因此我无法告诉您正在尝试做什么。不过,看起来您并没有使用索引器
Navn
似乎是一个属性,因此myKundeList中的每个k As Kunde的
如果k.Navn…
可能更符合您的要求:如果我放置Kundeliste,它会起作用。添加。。。。在与for each循环相同的子循环中-为什么?:)谢谢你的帮助!!