Entwickler-Ecke
C# - Die Sprache - Array in Klasse, von dem Nochmals Array
PinkoPalino - Mo 16.07.07 14:13
Titel: Array in Klasse, von dem Nochmals Array
Hi!
Ich habe folgenden Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| public class PointsInfo { public double L, A, B; public string description; }
public unsafe class clPointList { public int subPoints; PointsInfo* Points; } |
Dann habe cih so ein Element erstellt:
C#-Quelltext
1:
| unsafe clPointList *PointsToDraw = null; |
Wie kann ich jetzt z.B. die Variable PointsToDraw vergrößern, bzw. neu erstellen.
Ich habe es bereits so versucht:
C#-Quelltext
1: 2:
| PointsToDraw = stackalloc clPointList[10]; PointsToDraw[0].Points = stackalloc PointsInfo[20]; |
Es kommt aber immer die Fehlermeldung:
Invalid expression term 'stackalloc'
Ich habe VS 2003.
Christian S. - Mo 16.07.07 15:28
Wieso arbeitest Du mit Pointern? :gruebel: Ohne diese wäre ein solche Fehler sehr unwahrscheinlich.
PinkoPalino - Mo 16.07.07 21:27
Wie wäre dies ohne Pointer möglich?
Ich bin noch nicht so bewandert in C#.
Ich programmiere meistens in C++, aber ich muss hier einen C# Code erweitern.
Christian S. - Mo 16.07.07 21:51
Wenn ich das richtig sehe, sollte Dein Code mit C# Arrays so aussehen (Arrays bitte in der Doku nachlesen):
Warnung: Ich prüf's nicht im VS, Kleinigkeiten also bitte selber korrigieren. ;-)
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| public class PointsInfo { public double L, A, B; public string description; }
public class PointList { public int subPoints; PointsInfo[] Points; } |
Und erstellen so:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| PointList[] pointsToDraw = new pointsToDraw[10]; pointsToDraw[0] = new PointList(); pointsToDraw[0].Points = new PointsInfo[20];
pointsToDraw[0].Points[0] = new PointsInfo(); |
Und nun meine Frage? Spricht etwas gegen den Einsatz von VS
2005 und .NET 2.0? Damit könnte man das ganze recht schön lösen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| public class PointsInfo { public double L, A, B; public string description; }
public class PointList { private List<PointsInfo> points;
public PoinList() { points = new List<PointsInfo>; }
public List<PointsInfo> Points { get { return points; } }
public int SubPoints { get { return points.Count; } } } |
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| List<PointList> pointsToDraw = new List<PointList>(); PointList pl = new PointList(); pl.Points.Add(new PointsInfo()); pl.Points.Add(new PointsInfo()); pointsToDraw.Add(pl); pl = new PointList(); |
Der Witz ist halt, dass Du eine Liste verwendest, welche IIRC mindestens so schnell wie ein Array ist, dafür aber beliebig viele Elemente aufnehmen kann. Und man kann natürlich auch Elemente entfernen. Die Verwendung von Properties und Konstruktoren geht natürlich auch schon in VS2003 und sollte IMHO auch verwendet werden.
PinkoPalino - Di 17.07.07 09:35
Danke!
Ich habe an Arrays gar nicht gedach, und wenn, dann hätte ich nicht gewuss wie!
Aber dank dir ist das ja kein Problem mehr.
Gegen VS 2005 spricht eigentlich nichts, aber bei meinem Arbeitsplatz ist nur VS 2003 drauf. Leider.
Danke
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!