Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Pizzabroetchen Junior JLI'ler
Anmeldedatum: 29.02.2004 Beiträge: 55
Medaillen: Keine
|
Verfasst am: 11.12.2008, 15:37 Titel: C# gerneric list |
|
|
Hallo zusammen,
ich schaue mir gerade ein wenig XNA an und scheitere am C# Code. Und zwar versuche ich gerade dieses Asterioden Besipiel vom XNA Club zu erweitern, sodass wenn ein Asteriod zerstört wird, mehrere kleinere entstehen. So weit, so gut
Die neuen Asterioden speichere ich in einer Liste
List<Asteroid> asteroidSmallList = new List<Asteroid>();
nun würde ich gerne position und Rotation in der Update Methode ändern, daher habe ich versucht die Update Methode der Asterioden so aufzurufen
int iNumOfSmallAsteroids = asteroidSmallList.Count;
for (int i = 0; i < iNumOfSmallAsteroids; i++)
{
asteroidSmallList[i].Update(timeDelta);
}
Leider passiert nix. die neuen werte werden nicht übernohmen. nachdem ich das ganze so angepaßt habe, gings
int iNumOfSmallAsteroids = asteroidSmallList.Count;
for (int i = 0; i < iNumOfSmallAsteroids; i++)
{
Asteroid test = asteroidSmallList[i];
test.Update(timeDelta);
asteroidSmallList.RemoveAt(i);
asteroidSmallList.Add(test);
}
Meine Frage ist, ob ich wirklich immer ein neues Objekt erzeugen muss oder ich etwas nicht verstanden habe. Oder entferne und adde ich hier immer nur die Referenz und nicht das komplette Objekt (bzw. struct)? Ansonsten wäre das ja wohl eher nicht so performant, wenn mann das öfter aufruft |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 11.12.2008, 20:32 Titel: |
|
|
Zitat: | Referenz und nicht das komplette Objekt (bzw. struct) |
Ist Asteroid denn eine struct? Diese werden wenn ich mich nicht irre direkt kopiert und geben dann sozusagen eine neue Instanz zurück. Wenn das so ist dann musst du den Asteroid zu einem object wandeln.
Ansonsten könnte ich mir dieses verhalten auch nicht erklären. |
|
Nach oben |
|
|
Pizzabroetchen Junior JLI'ler
Anmeldedatum: 29.02.2004 Beiträge: 55
Medaillen: Keine
|
Verfasst am: 16.12.2008, 15:50 Titel: |
|
|
ja es ist ein struct. Ich werd Asteriod mal als Klasse implementieren und schaun was er macht
edit: ok, als klasse definiert gehts. |
|
Nach oben |
|
|
David Super JLI'ler
Alter: 39 Anmeldedatum: 13.10.2005 Beiträge: 315
Medaillen: Keine
|
Verfasst am: 19.12.2008, 15:03 Titel: |
|
|
C# kennt übrigens auch Iteratoren und zieht es im Normfall vor, wenn diese verwendet werden! |
|
Nach oben |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 23.12.2008, 07:46 Titel: |
|
|
Oder noch schöner: Foreach.
CPP: | foreach(Asteroid asteroid in smallAsteroidList)
{
} |
|
|
Nach oben |
|
|
David Super JLI'ler
Alter: 39 Anmeldedatum: 13.10.2005 Beiträge: 315
Medaillen: Keine
|
Verfasst am: 23.12.2008, 09:13 Titel: |
|
|
xardias hat Folgendes geschrieben: | Oder noch schöner: Foreach.
CPP: | foreach(Asteroid asteroid in smallAsteroidList)
{
} |
|
Foreach verwendet doch das Aufgebot der Iteratoren von List<>. :p |
|
Nach oben |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 23.12.2008, 09:15 Titel: |
|
|
Jo, ich hab auch nix anderes behauptet, aber so könnte man ja auf die Idee kommen Iteratoren per Hand zu benutzen |
|
Nach oben |
|
|
David Super JLI'ler
Alter: 39 Anmeldedatum: 13.10.2005 Beiträge: 315
Medaillen: Keine
|
Verfasst am: 23.12.2008, 09:18 Titel: |
|
|
xardias hat Folgendes geschrieben: | Jo, ich hab auch nix anderes behauptet, aber so könnte man ja auf die Idee kommen Iteratoren per Hand zu benutzen |
Richtig! Vorsicht ist besser als Nachsicht! ;P |
|
Nach oben |
|
|
|