Hallo Forum,
Ich möchte euch mal eine Methode vorstellen, wie man folgendes Problem lösen kann:
Problemstellung
Die Lösung benutzt IDs, die den Elemten zugeornet sind und sich im gesamten Lifecycle des Elemnts nicht verändern.
Dazu der Anfang:
ElementIDs hält dann die ID-Zuordnungen fest.
Je nach Datenmege könnte man die IDs auch vom Typ Long oder Short oder Byte machen, wir nehmen aber Integer.
Wenn wir jetzt ein Elemnt erstellen (Create), dann vergeben wir eine ID und geben diese direkt zurück:
GetNextID() muss nun also eine einzigartige ID generieren. Das ist recht einfach:
Und nun zum löschen:
Das ganze ist hier ohne Error-Handling und somit recht heikel.
Mögliche Fehler:
Im Programm muss man dann nurnoch irgendwo sich die IDs "merken"
Bei Fragen antworte ich gerne, solange sie an der richtigen Stelle gefragt werden.
Ich möchte euch mal eine Methode vorstellen, wie man folgendes Problem lösen kann:
Wir stellen ein Klasse bereit, die viele Objekte des selben Typs in einer Liste verwaltet, der User erstellt
1 2 3 4 5
Sodass die Liste auch diesen inhalt hat.
Elemnt 4 hat den Index 3, nachdem es erstellt wurde.
Nun möchte unser User aber Element 3 loswerden, welches den Index 2 hat.
1 2 4 5
Elemnt 4 hat nun Index 2.
Will der User Elment 4 nun mit seinem alten Index löschen (3), dann wird aber Elemnt 5 gelöscht.
1 2 3 4 5
Sodass die Liste auch diesen inhalt hat.
Elemnt 4 hat den Index 3, nachdem es erstellt wurde.
Nun möchte unser User aber Element 3 loswerden, welches den Index 2 hat.
1 2 4 5
Elemnt 4 hat nun Index 2.
Will der User Elment 4 nun mit seinem alten Index löschen (3), dann wird aber Elemnt 5 gelöscht.
Die Lösung benutzt IDs, die den Elemten zugeornet sind und sich im gesamten Lifecycle des Elemnts nicht verändern.
Dazu der Anfang:
ElementIDs hält dann die ID-Zuordnungen fest.
Je nach Datenmege könnte man die IDs auch vom Typ Long oder Short oder Byte machen, wir nehmen aber Integer.
Wenn wir jetzt ein Elemnt erstellen (Create), dann vergeben wir eine ID und geben diese direkt zurück:
VB.NET-Quellcode
GetNextID() muss nun also eine einzigartige ID generieren. Das ist recht einfach:
Und nun zum löschen:
Das ganze ist hier ohne Error-Handling und somit recht heikel.
Mögliche Fehler:
- Keine IDs mehr vorhanden (> 2^31 Elemente und trotzdem noch Arbeitsspeicher ) -> OverFlowException in GetNextID(), da While zu endlosschleife mutiert
- ID existiert nicht (mehr) -> IndexOutOfRangeException in Remove, da idx = -1
Im Programm muss man dann nurnoch irgendwo sich die IDs "merken"
Bei Fragen antworte ich gerne, solange sie an der richtigen Stelle gefragt werden.