Entwickler-Ecke
C# - Die Sprache - Array´s als Basis für andere Array´s
vermis-one - Fr 01.06.07 16:38
Titel: Array´s als Basis für andere Array´s
Hi zusammen..
ich hoffe der titel ist nicht zu verwirrend.. :?
zum hintergrund..
ich habe mehrere einfache Arrays.. diese sind in einem/mehrere zwei-dimensionalen array´s zusammengefasst..
und diese bilden die grundlage für "objekt-details".. jene objekte fasse ich auch wieder in einem array zusammen..
ein vereinfachtes (im programm selbst sind es viele viele listviewitems) beispiel hier:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| #region diese region soll die basis darstellen
int[] ar1 = { 1,2,3,4,5}; int[] ar2 = { 6,7,8,9,0}; int[][] arZ1 = { ar1, ar2 }; #endregion
int[][][] arObjekte = { }; |
jetzt will ich das array arZ1 als Daten-Basis für jedes neue "Objekt" haben..
C#-Quelltext
1: 2:
| Array.Resize(ref arObjekte, arObjekte.Lenght + 1); arObjekte[arObjekte.Lenght - 1] = arZ1; |
soweit so gut.. jetzt das problemchen.. die daten in arObjekte[0] kann ich ohne Probleme anpassen..
wenn ich jetzt aber ein weiteres hinzufüge dann sind die daten in arObjekt[1] mit arObjekte[0] identisch..
wenn ich noch ein paar daten ändere - sind diese wieder auch in beiden gleich..
ich habe diese "verschachtelung" gewählt weil ich mit einem treeview arbeite.. so ist die "navigation" leichter..
zudem ändert sich die anzahl der objekte, der zusammenfassungen und auch der details im laufe der zeit (die quelldaten
werden aus einer/mehreren datei/en eingelesen ) -> ein array lässt sich leicht zur laufzeit vergrößern..
z.b.:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| Tier -> "Objekt" | -> Wassertier -> Zusammenfassend | ->Detail1 -> Details ->Detail2
arObjekt[Objekt-Index][Zusammenfassung-Index][Detail-Index] |
Ich hoffe es ist einigermaßen verständlich was ich vorhabe.. :?:
Die Frage dabei ist wie ich es hin bekomme das ich die basis-daten eines jeden "objekts" seperat ändern kann.. :gruebel:
Falls jemand eine Idee hat..
Oder falls ich es mir zu kompliziert/unpraktisch mache..
dann wäre ich dankbar für jeden hinweis..
Christian S. - Fr 01.06.07 21:40
Ich habe jetzt nicht ganz verstanden, was Du jetzt zuweist :nut: , aber hast Du beachtest, dass Arrays Referenzdatentypen sind?
vermis-one - Fr 01.06.07 22:59
Christian S. hat folgendes geschrieben: |
Ich habe jetzt nicht ganz verstanden, was Du jetzt zuweist :nut: , aber hast Du beachtest, dass Arrays Referenzdatentypen sind? |
Ja.. daran hab ich gar nimmer gedacht.. Verflixt - dann kanns ja nicht funktionieren..
Hmm.. wenn ich´s mir jetz recht überlege ist auch nicht so wichtig was genau ich wo, warum zuweise..
hab wieder mal zu kompliziert gedacht.. denn im prinzip will ich kurz gesagt nur ein mehrdimensionales array duplizieren..
und das ist mein problem..
hab inzwischen ein wenig weitergeforscht..
dabei hab ich die standard-methoden array.clone() oder array.copyto() gefunden, welche aber nur eine "flache kopie"
erstellen.. es war auch immer wieder von einer "tiefen kopie" die rede - die ein komplettes duplikat erstellt..
hab aber nix gefunden das mir erklärt wie ich ein array (in meinen fall ein listviewitem-array) dupliziere..
vermis-one - Mo 04.06.07 19:59
so.. das problem ist zwar nicht gelöst.. aber einigermaßen umgangen..
ich erstelle bzw. vergrößere die array´s nun zur laufzeit und fülle diese gleichzeitig mit den standard(basis)werten..
statt die array-basis beim start zu erzeugen und diese (versuchen - bisher ohne erfolg) zu duplizieren..
so hat jedes array eigene daten die unabhängig von einander geändert werden können..
falls jemand dennoch weiß wie man array´s (ein- und mehrdimensional) komplett dupliziert..
wäre dies immer noch interessant zu wissen..
ambig - Mo 04.06.07 21:30
aber du arbeitest doch gar nicht mit mehrdimensionalen arrays sondern mit jagged arrays.
vielleicht ist List<int[]> da die bessere lösung.
vermis-one - Mo 04.06.07 21:45
ups... hab ich mehrdimensional geschrieben.. :oops:
ich verwechsel die beiden arten immer wieder..
mit list hab ich noch nicht gearbeitet.. muss mal bei gelegenheit schauen ob das
was für meine zwecke ist.. aktuell läufts zumindest so wie ich es mir vorstell..
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!