Referenzen auf Instanzen

Der GarbageCollector ist bestandteil des .Net-Frameworks. Wie genau der implementiert ist weiß ich leider nicht. Aber du kannst dir sicher sein, dass er seine Arbeit gut und sinnvoll tut :)

Wenn du K aus allen drei Listen löschen willst, dann ruf einfach drei mal die Remove-Methode auf, wie oben geschrieben!
C#:
ListeA.Remove(K);
ListeB.Remove(K);
ListeC.Remove(K);
Das K in ListeA gar nicht vorhanden war stört die Remove-Methode nicht. Der Rückgabewert ist dann lediglich False.
 
die listen stehen in drei verschienden instanzen drin
also müsste ich

A.ListeA.Remove(K);
B.ListeB.Remove(K);
C.ListeC.Remove(K);

ausführen, nur dazu müsste ich an irgendeiner stelle die Instanzen A, B und C kennen.
 
So wie es ausschaut, ja: du musst Verweise auf A, B und C haben.
Aber vielleicht lässt sich dein Problem grundlegend anders lösen. Was ist denn dein Ziel?
 
also als beispiel habe ich eine Klasse Auto.
auto besitzt die attribute Farbe und Marke.

dann Habe ich die Klassen
Alle Autos mit der Liste ListeAutos hier sind alle Autos die es gibt abgelegt.

dann gibt es die Klasse AutoFarbe
wobei die Instanz BlauesAuto von AutoFarbe eine Liste mit allen blauen Autos beinhaltet
eine Instanz RotesAuto von AutoFarbe eine Liste mit allen roten Autos.

und das selbe nochmal für Marken.

wenn jetzt ein Auto Zerstört wird muss ich das ja überall löschen.
da ich aber von AutoFarbe und Marke unendlich viele Instanzen haben kann wäre es schön wenn ich es einfach irgendwo lösche und in jeder liste verschwindet.
 
Aha, was du meinst ist wahrscheinlich kein Attribut sondern eine Eigenschaft (Property), richtig?
Du könntest das mit Hilfe von Events lösen.
Du gibst der Auto-Klasse eine Methode "ZerstöreMich", welche dann ein Event "IchWurdeZerstört" auslöst. Alle Instanzen, die eine Referenz auf das Auto speichern, abonnieren das Event und im Eventhandler entfernst du das zerstörte Auto aus der Liste.
 
Und warum brauchst du die Listen für die Marke, rote und blaue Farbe, wenn du die Autos bereits in einer Autoliste drin hast? Damit erstellst du nur unnötige "Verlinkungen" und hast im Endeffekt das Problem, das du jetzt hast, du musst nämlich mit allen Listen gleichzeitig arbeiten o_O Eine Liste, in der alle Fahrzeuge drin sind, reicht doch vollkommen aus oder nich?
 
Hallo,

hmm wo genau ist der unterschied zwischen einen Attribut und einer Eigenschaft?
ein Attribut ist ja eine Variable in einer Klasse und eine Eigenschaft?
Also ein Button kann zum Beispiel die Eigenschaft Visible haben, aber das sah ich bisher auch nur als Variable an.

An sowas wie diese Zerstör mich Methode dachte ich, aber die muss ja dann irgendwie auf die Listen zugreifen können oder?
kannst du mir bitte noch etwas genauer erzählen wie das Funktioniert?

der Vorteil an verschiedenen Listen ist die Verarbeitung.
wenn du zum Beispiel alle blauen Autos auf irgend etwas Bestimmtes gegen seitig vergleichen willst, dann hast du bei insgesamt 1000 Autos und davon 20 blaue Autos
20 * 19 = 380 vergleiche die du machen musst, wenn du weißt welche Autos blau ist, also in einer eigenen Liste liegen.
oder 1000*999 = 999000 überprüfungen ob ein Auto blau ist und 380 eigendliche vergleiche auf den Wert.

also 999380 berechnungen zu 380 berechnungen.
klar?

gruß und dank
 
Einleuchtend ist es zwar, aber was willst du machen, wenn weitere Farben dazukommen oder andere Eigenschaften der Fahrzeuge auch so "unter die Lupe genommen" werden, willst du dann für alles eine Liste anlegen? Die Veränderungen in deinem Code werden dann aber gewaltig werden.
 

Neue Beiträge

Zurück