[C#] Mit foreach durch alle Instanzen einer Klasse?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Tomatensaft, 14. September 2009 .

Schlagworte:
  1. 14. September 2009
    Mit foreach durch alle Instanzen einer Klasse?

    Salve,

    ich arbeite mich gerade in C# ein und hänge ..

    Und zwar hab ich eine Klasse geschrieben (SpriteObjects) die ich eigentlich nur mit Variablen gefüttert habe.

    Das ganze sieht so aus ...
    Code:
    
    SpriteObject cloud1;
    
    //(...)
    
    cloud1 = new SpriteObject(Content.Load<Texture2D>("Sprites\\mapres\\bg_cloud1"));
    
    
    Jetzt kommt das eigentliche Problem .. Wie kann ich durch alle Instanzen der SpriteObject klasse via foreach gehen, so dass ich in einer schleife bspw. alle Instanzen durchgehe um eine variable zu verändern?

    Ich hoffe man versteht was ich damit meine

    MfG
     
  2. 14. September 2009
    AW: Mit foreach durch alle Instanzen einer Klasse?

    Naja, du könntest ein "SpriteObject" Array anlegen

    Die foreach könnte dann so aussehen

    Code:
    SpriteObject[] SpriteArray=new SpriteObject[5];
    ...
    
    //Initialisierung
    
    for(int i=0;i<5;i++)
     SpriteArray[i]=new SpriteObject();
    ...
    
    foreach (SpriteObject _var in SpriteArray)
    { ... }
    
    
     
  3. 14. September 2009
    AW: Mit foreach durch alle Instanzen einer Klasse?

    Das Problem an der Lösung von EvulGurke ist aber, dass das Array dann global verfügbar sein muss.

    Ich würde das so lösen (ich kann kein C#, deshalb erklär ich das ganze nur):
    1. Eine statisches Klassenarray, welches alle Instanzen hält.
    2. Im Konstruktor muss sich die Instanz selbst im Array ablegen.
    3. Im Destruktor entfernt sie sich wieder
    4. Eine statische Klassenmethode, welche das Array zurückgibt.
     
  4. 14. September 2009
    AW: Mit foreach durch alle Instanzen einer Klasse?

    Die Idee ist nicht schlecht, wobei es evtl 2 kleinere Probleme gibt.

    In C# gibt es zwar Destruktoren, aber man kann Objekte nicht manuell löschen (dank Garbage Collector)
    Ich würde kein Array nutzen, sondern auch Klasse schreiben, die von List<t> oder ArrayList erbt. Da kann man auch wunderbar noch Funktionen hinzufügen.

    greez
     
  5. 14. September 2009
    AW: Mit foreach durch alle Instanzen einer Klasse?

    Hm, ich dachte da gäbe es so ein Dispose-Interface, von welchem man ableiten soll. Und die Dispose()-Methode wird dann immer aufgerufen, wenn das Objekt nicht mehr gebraucht wird.
     
  6. 14. September 2009
    AW: Mit foreach durch alle Instanzen einer Klasse?

    Ja, das geht auch, dann muss man die Klasse von IDisposable ableiten.

    IDisposable.Dispose Method

    ist aber auch alles sone Sache. Sollte aber eigentlich funktionieren

    greez
     
  7. 14. September 2009
    AW: Mit foreach durch alle Instanzen einer Klasse?

    Danke schonmal ..
    Die sache mit dem Array is zwar machbar, stellt mich allerdings vor das Problem mir alle Sprites im Spiel per Nummer merken zu müssen .. Dachte da gäbe es ne einfachere Methode ..
     
  8. 15. September 2009
    AW: Mit foreach durch alle Instanzen einer Klasse?

    Naja, das Array kannst du ja durchschleifen so wie du es vorhattest. Und nicht alles direkt per Index ansprechen.

    Aber mit einer foreach wirst du dann eh noch auf das Problem stoßen das du die Elemente da nicht ändern kannst, musst also normal mit ner for durchschleifen.
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.