Autor Beitrag
vermis-one
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 25

Win XP
VB.NET/C# VS2008express, XNA3.0 CTP
BeitragVerfasst: Fr 01.06.07 16:38 
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:
ausblenden 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}; //detail-array
int[] ar2 = { 6,7,8,9,0}; //detail-array

int[][] arZ1 = { ar1, ar2 }; //ein zusammenfassendes array

#endregion

int[][][] arObjekte = { }; //das "objekt-array"


jetzt will ich das array arZ1 als Daten-Basis für jedes neue "Objekt" haben..

ausblenden C#-Quelltext
1:
2:
Array.Resize(ref arObjekte, arObjekte.Lenght + 1); //erstmal vergrößern..
arObjekte[arObjekte.Lenght - 1] = arZ1;  //und dann das basis-array einfügen..


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.:
ausblenden 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..

_________________
Vor dem Zweiten Weltkrieg war das Leben einfach, danach gab es Computer. Grace Hopper
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
vermis-one Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 25

Win XP
VB.NET/C# VS2008express, XNA3.0 CTP
BeitragVerfasst: Fr 01.06.07 22:59 
user profile iconChristian 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..

_________________
Vor dem Zweiten Weltkrieg war das Leben einfach, danach gab es Computer. Grace Hopper
vermis-one Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 25

Win XP
VB.NET/C# VS2008express, XNA3.0 CTP
BeitragVerfasst: 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..

_________________
Vor dem Zweiten Weltkrieg war das Leben einfach, danach gab es Computer. Grace Hopper
ambig
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 25

Win XP
VB.NET/C# VS2008express, XNA3.0 CTP
BeitragVerfasst: 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..

_________________
Vor dem Zweiten Weltkrieg war das Leben einfach, danach gab es Computer. Grace Hopper