Autor Beitrag
LordSimonXp
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 08.03.08 22:27 
Hi Leute!

also ich habe Probleme mit Arraylists die mit Struct arbeiten.
dh:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
        struct EnemyRecord
        {
            public int ABC;
            public char DEF;
        }
        EnemyRecord   dingsEnemy = new EnemyRecord   ();
        dingsEnemy.ABC = 34;


das funktioniert aber ich möchte das ganze nun als dynamisches array - soll heissen ich möchte eine Anzahl X der "dingsEnemy" haben.
so habe ich es in Delphi gemacht:

ausblenden Delphi-Quelltext
1:
setlength(dingsEnemy,length(dingsEnemy)+1);					

nun kann ich
ausblenden Delphi-Quelltext
1:
dingsEnemy[length(dingsEnemy)-1].ABC					

benutzen(bzw dem ABC einen Wert zuschreiben).

kann mir bitte iener sagen wie ich meinen C# Code anpassen muss um es genau so machen zu können?

Dankeschön schonmal.

Moderiert von user profile iconChristian S.: Quote- durch C#-Tags ersetzt
Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
Moderiert von user profile iconChristian S.: Topic aus Allgemeine .NET-Fragen verschoben am Sa 08.03.2008 um 21:40
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 08.03.08 22:41 
ArrayLists sind nicht typensicher und teilweise langsam, nutze stattdessen eine List<T>. Dann bekommst Du über myList.Count die Anzahl der Einträge.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
LordSimonXp Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 08.03.08 22:57 
ok von Listen hab ich schon mal was gehört aber da ist auch das gleiche problem wie bekomme ich da mein struct rein??
hast du vielleicht ein kleines Beispiel?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 08.03.08 23:47 
Ich hab nicht den Eindruck, dass Du Dir die Klasse mal in der Doku angesehen hast :? Da wäre Dir bestimmt die Add-Methode aufgefallen.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
LordSimonXp Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 09.03.08 01:41 
o doch doch hab mir die Sachen durchgeschaut und eine "einfache" Liste kann ich schon erstellen aber halt nur eine die entweder int, string... beinhaltet aber mir fehlt noch etwas also - ich würde das gerne so benutzen wie hier im beispiel aber ich kann es halt nicht (bin auch nicht so fit in C#)

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
        struct buildingsproperties
        {
            int X;
            int Y;
            String buildingtype;
        }
        public List buildings = new List();

        public void add(String buildingtype, int X, int Y)
        {
            buildings.Add(buildingtype); 
            buildings[buildings.length].X = X;
            buildings[buildings.length].Y = Y;
        }


so in etwa würde ich das gerne benutzen wollen aber :|wie schon gesagt kA wie ich den struct damit verbinden kann
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 09.03.08 01:56 
Zum einen: Benutz eine List<T> bzw. in diesem Fall eine List<buildingsproperties>. Eine List ist nicht das, was ich meinte ;)

Und ich fürchte, dadurch das ein Struct ein Wert- und kein Referenzdatentyp ist, wirst Du mittels buildings[buildings.length].X = X; nicht auf X drauf zugreifen können, sondern musst immer den kompletten Struct neu setzen.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
LordSimonXp Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 09.03.08 12:47 
:( das übersteigt nun völlig mein
Vorstellungsvermögen. Gibst den keine Möglichkeit das wie in Delphi gleich zu tuen?
Hab die msdn und google durchgesucht aber nirgends Beispiele gefunden :|
(wie schon gesagt mit delphi schaff ich sowas ganz leicht aber hier bei C# klappt es net)
könnte man den Code nicht irgendwie anpassen? Btw Performance spielt keine Rolle.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 09.03.08 12:56 
Du hast an dieser Stelle folgendes Problem:

Das hier:
ausblenden C#-Quelltext
1:
buildings[buildings.Count-1]					

ist in Wahrheit:
ausblenden C#-Quelltext
1:
buildings.Item[buildings.Count-1]					

ist in Wahrheit:
ausblenden C#-Quelltext
1:
buildings.get_Item(buildings.Count-1)					


Du machst also nichts weiteres, als eine Funktion aufzurufen. Da ein Struct aber - wie bei Delphi ein Record - kein Referenzdatentyp ist, gibt die Funktion eine Kopie zurück. Und wenn Du da eine Eigenschaft änderst, hat das keinen Einfluss aufs Original.

Die einfachste Möglichkeit ist wohl, das Ganze mit einer Klasse statt einem Struct zu machen.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
LordSimonXp Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 09.03.08 13:04 
phu ok werde es in eine classe packen :P
danke für die Antwort