Benutzer mit den meisten Antworten
Klassen und List(Of T)

Frage
-
Guten Tag,
ich habe eine Klasse (Schwankung). Diese wird in einem anderen Modul mehrfach
Instantiiert.
SW = New SchwankungJetzt meine Frage: Zum Start des Programms können z.B. vier Instanzen erzeugt werden.
Zu einem späteren Zeitpunkt können mehrere Instanzen hinzukommen oder wegfallen.
Hinzufügen ist ja kein Problem. Nur das Löschen einer bestimmten Instanz scheint nicht so einfach zu gehen. Müsste ich jede Instanz in einer List(Of T) speichern. Oder? Wäre zumindest ein Ansatz. Wie müßte ich diese List declarieren?Gruß Olaf
Olafx
Antworten
-
Hallo,
so ganz verstehe ich dich nicht. Wenn du mehrere Instanzen hast, und die Anzahl zur Laufzeit unterschiedlich ist brauchst du eine Liste zum Abspeichern. Beispielsweise die von dir vorgeschlagene List(of T):'Liste in Klasse oder Modul deklarieren und zuweisen' Dim myInstances As New List(Of Schwankung)
Wenn du nun eine neue Instanz erstellst, kannst du sie einfach hinzufügen:
Dim myNewInstance as new Schwankung() 'Zuweisung von Eigenschaften usw.' myInstances.Add(myNewInstance)
Das Abrufen geschieht über den Index in der Liste:
'1. Element abrufen' dim myInstance = myNewInstances(0)
'Mache etwas mit "myInstance"'Oder alle in einer For Each Schleife:
For Each instance In myInstances 'verarbeite instance' Next
Das Löschen geht über den Index:
'Entfernt 1. Item' myInstances.RemoveAt(0)
oder über die Instanz selbst:
'Entfernt das Element myInstance' myInstances.Remove(myInstance)
Die List(Of T)-Klasse hat noch viele weitere Methoden, die du in der MSDN findest.
PS: Fürs verständnis. Eine List(Of T) ist eine Liste mit mehreren Elementen. Wenn du also irgend etwas mit einem bestimmten Element machen willst, musst du dieses erst heraus "picken". Das geht i.d.R. über den Index.PPS: Verwechsle in meinen Beispielen myInstance nicht mit myInstances ;)
Tom Lambert - C# MVP
Bitte bewertet- und markiert Beiträge als Antwort. Danke.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Bearbeitet Tom Lambert (Koopakiller)Moderator Sonntag, 24. August 2014 16:45 PS / PPS
- Als Antwort markiert Olafx Sonntag, 24. August 2014 17:29
Alle Antworten
-
Hier mal gefummel:
Dim Test As New List(Of Schwankung) Test.Add(New Schwankung(1)) Debug.Print(Test.Last.ToString)
Jetzt kann ich aber nicht auf die Rückgabewerte zugreifen.
Normalerweise wäre die Klasse so:
Dim Test as New Schwankung(1)
Test.Ausgabewert
Oder Eingabewert für eine Sub
Test.Schwankung(Kurs)
Beides fehlt in der List(Of T). Ich erstelle ja eine List und keine Instanz der Klasse. Oder?
Wie könnte ich das Lösen?
Gruß Olaf
Olafx
-
Hallo,
so ganz verstehe ich dich nicht. Wenn du mehrere Instanzen hast, und die Anzahl zur Laufzeit unterschiedlich ist brauchst du eine Liste zum Abspeichern. Beispielsweise die von dir vorgeschlagene List(of T):'Liste in Klasse oder Modul deklarieren und zuweisen' Dim myInstances As New List(Of Schwankung)
Wenn du nun eine neue Instanz erstellst, kannst du sie einfach hinzufügen:
Dim myNewInstance as new Schwankung() 'Zuweisung von Eigenschaften usw.' myInstances.Add(myNewInstance)
Das Abrufen geschieht über den Index in der Liste:
'1. Element abrufen' dim myInstance = myNewInstances(0)
'Mache etwas mit "myInstance"'Oder alle in einer For Each Schleife:
For Each instance In myInstances 'verarbeite instance' Next
Das Löschen geht über den Index:
'Entfernt 1. Item' myInstances.RemoveAt(0)
oder über die Instanz selbst:
'Entfernt das Element myInstance' myInstances.Remove(myInstance)
Die List(Of T)-Klasse hat noch viele weitere Methoden, die du in der MSDN findest.
PS: Fürs verständnis. Eine List(Of T) ist eine Liste mit mehreren Elementen. Wenn du also irgend etwas mit einem bestimmten Element machen willst, musst du dieses erst heraus "picken". Das geht i.d.R. über den Index.PPS: Verwechsle in meinen Beispielen myInstance nicht mit myInstances ;)
Tom Lambert - C# MVP
Bitte bewertet- und markiert Beiträge als Antwort. Danke.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Bearbeitet Tom Lambert (Koopakiller)Moderator Sonntag, 24. August 2014 16:45 PS / PPS
- Als Antwort markiert Olafx Sonntag, 24. August 2014 17:29