[ dontoo @ 14.03.2010. 12:14 ] @
Recimo da su ovo klase Program i Engine:

Code:
class Program
{
    static void Main()
    {
        string x;
        Engine obj = new Engine();
        while ( (x = console.ReadLine ()) != "Quit" )
        {
            switch ( x )
            {
                case "NovaIgra":
                    obj.NovaIgra( argument);
                    break;
                case "Undo":
                    obj.Undo();
                    break
                case "Score":
                   obj.Score();
                    break;
             }
        }
    }
}

class Engine
{
     int[] ploca_za_igru;
     void NovaIgra( int argument)
     {
          if ( argument == 5 )
              ploca_za igru = new int[5];
          else if ( argument == 10 )
              ploca_za_igru = new int [10];
           ...
           ....
     }
}


Evo što je pitanje. Svaki put kad korisnik odabere NovaIgra() kreirat će se niz koji predstavlja igračku ploču xy veličine. Što će se desiti sa oni starim nizom koji mi više ne treba? Dali će njega garbage collector maknuti iz memorije? Ne želim imati 200 nizova u memoriji svaki put kad korisnik pokrene NovaIgra().


[Ovu poruku je menjao mmix dana 14.03.2010. u 16:17 GMT+1]
[ mmix @ 14.03.2010. 16:29 ] @
Obrisace ga GC, ali bih ti ja svejedno prepoporucio da koristis malo izmenjeni mehanizam. Instanca tipa Engine predstavlja jednu igru, ako ti igru pokrenes ponovo sve reference na Engine ce dobiti novu igru sto moze napraviti problem ako postoji dve ili vise referenci na nju. Enakpsuliraj celu jednu igru u jednu instancu i ako pokreces novu igru kreiraj novu instancu umesto sto rekreiras tablu u istoj instanci. Ako je pak zahtev da moze postojati samo jedna partija onda taj enkapsiluranu klasu igre upakuj u singleton pattern. Nisi naravno uradio nista pogresno, ali su ovo neki saveti da ti kod bude organizovaniji i lakse prosiriv.
[ dontoo @ 15.03.2010. 09:50 ] @
Kužim, samo pravim novi objekt klase za novu igru.