mit funktion in klasse opjekt entfernen

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Fire.

    Vielleicht hilft Dir das:

    VB.NET-Quellcode

    1. Public liste As New List(Of Integer)
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. For I As Integer = 0 To 10
    4. liste.Add(I + I)
    5. Next
    6. Stop
    7. For I As Integer = 0 To 5
    8. liste.Item(I + I) = Nothing
    9. Next
    10. Stop
    11. liste.RemoveAt(5)
    12. Stop
    13. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    List() befüllen,
    ansehen,
    die Instanz einzelner Elemente löschen,
    ansehen,
    ein Element rausschmeißen
    ansehen,

    Kaffee trinken. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    List() befüllen,
    ansehen,
    die Instanz einzelner Elemente löschen,
    ansehen,
    ein Element rausschmeißen
    ansehen,

    hmm, das Gedicht reimt sich noch nicht, könntest Du das evtl. noch verbessern ? ;)

    Stop hab ich noch nie verwendet, aber nützlich. Die Instanzen auf Nothing zu setzen ist in Listen nicht so zu empfehlen, da der Listenzähler sich hierbei nicht verändert ( es bleiben also weiterhin 11 Elemente).

    Mit Liste.remove(5) wird das Listenelement an Stelle 5 entfernt und List.Count um 1 runtergesetzt.

    *KaffeeHol*
    Genau deswegen habe ich
    sowohl

    VB.NET-Quellcode

    1. liste.Item(I + I) = Nothing

    als auch

    VB.NET-Quellcode

    1. liste.RemoveAt(5)

    implementiert, damit sich der Kandidat ein wenig in dei Materie einarbeiten kann.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ok das meinte ich nicht. Ich hab es wahrscheinlich nicht so gut erklärt. Also ich habe die Klasse A und eine List(Of A). Jetzt möchte ich innerhalb der Klasse A eine Funktion haben, um das Objekt aus der Liste zu entfernen. Also in etwa "Liste.Remove(Me)". Hoffe ihr versteht was ich meine.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Bluespide“ ()

    Bluespide schrieb:

    Hoffe ihr versteht was ich meine.
    Vielleicht.

    Es kommt darauf an , was Du genau umsetzen möchtest. Wenn Du z.B. die Liste der Instanzen von A führen möchtest, kannst Du sie als statische (Shared) Liste in der Klasse A selber führen.

    VB.NET-Quellcode

    1. Class A
    2. ' Liste der aktiven Instanzen von A
    3. Shared ReadOnly Property Liste As List(Of A)
    4. Get
    5. Return _liste
    6. End Get
    7. End Property
    8. Private Shared _liste As List(Of A)
    9. ' Constructor
    10. Sub New()
    11. ' beim Anlegen der Liste hinzufügen
    12. _liste.Add(Me)
    13. End Sub
    14. ' Remove, Dispose wie auch immer
    15. Sub remove()
    16. _liste.Remove(Me)
    17. End Sub
    18. End Class

    Hat den Vorteil dass Du alles in einer Klasse gekapselt hast.

    Natürlich kannst Du die Liste auch ausserhalb von A führen: entweder auch Shared damit Du sie aus A ansprechen kannst, oder Du gibst der Remove Methode die Liste als Parameter mit.
    ok scheint zu funktioniert, aber jetzt ist ein anderes Problem aufgetaucht und zwar habe ich eine for each schleife und da kommt jetzt der Fehler "Die Auflistung wurde geändert. Der Enumerationsvorgang kann möglicherweise nicht ausgeführt werden." :pinch:
    ich nehme an in der for each schleife änderst du die auflistung, und das geht ja mal gar nicht ;)
    wenn du innerhalb der schleife was änderst, dann lieber so:

    VB.NET-Quellcode

    1. For I as integer=Liste.Count-1 to 0 step -1
    2. Dim Item as A=Liste(i)
    3. if item.blabla=blablabla then
    4. Liste.RemoveAt(i)
    5. end if
    6. Next