/ / Zničiť starú inštanciu objektu a vytvoriť novú v slučke - c #, .net, object, for-loop

Zničte starú inštanciu objektu a vytvorte novú v smyčke - c #, .net, object, for-loop

V mojom kóde je vytvorenie objektu extrémne drahé a pamäť je dosť veľká. Musím ho vytvoriť asi 100 krát na testovanie môjho produktu. Ak to napíšem

for(int i =0; i < length; i++){

Object ob = new Object();
//do something with ob

Object2 ob2 = new Object2();
//do more with ob2

}

Bude to vytvárať nový ob, ob2 zakaždým, keď je spustená slučka? Potrebujem, aby boli nastavené na nulu na konci slučky po vykonaní, inak moje výsledky testov vyjdú zle. Podľa toto to nezáleží, takže som trochu zmätený.

Myslím, že by ich mal zničiť na konci slučky.

odpovede:

3 pre odpoveď č. 1

Nemusíte nastaviť ob a ob2 na hodnotu null.

Vo vašom kóde vyššie po každej iterácii for-loop už nemôžete pristupovať k ob a ob2 objekty z predchádzajúcej iterácie. To znamená, že budú zberané odpadky nakoniec.

Ak však implementujú IDisposable mali by ste ich zlikvidovať pred koncom každej iterácie.


0 pre odpoveď č. 2

Áno, objekty ob a ob1 sú vytvorené a zničené v rozsahu vášho for slučky; tak sa vytvárajú nové objekty pre obidva na každej iterácii slučky.

Ak ich potrebujete null na konci slučky v slučke, ale pred nasledujúcou iteráciou slučky, potom ich nastavte na hodnotu null:

ob = null;
ob1 = null;

Zdá sa však zbytočné (okrem toho, že pôvodný príspevok hovorí, že to musíte urobiť). Objekty sú zničené na každom konci iterácie slučky a po dokončení slučky nebudú existovať.