garbage collector - string[] kopieren
-
hallo,
mal eine grundsätzlich frage, zum thema "wer räumt auf"
string[] a = { "a","b","c" }; string[] b = { "e","f","g" }; string[] c; // später zur laufzeit c = a; // mach irgendwas, dann ... c = b;
muss man c vor der zweiten zuweisung ( was ja in C# ein kopie ist, oder ? ) mit delete löschen oder macht das der GC ?
-
nein musst du nicht - man loescht nur sachen die IDisposable implementieren //name kann variieren, bin grad nicht sicher
in deinem beispiel wird nur die referenz von c auf b umgebogen
der gc merkt dann (irgendwann) das die alten daten auf die c mal zeigte nirgends mehr verwendet werden und raeumt dann auf
-
besten dank für die antwort !
ja, da muss man sich als alter C++ programmierer erstmal dran gewöhnen, dass jetzt andere die aufräumarbeit machen
-
als alter c++ler kannst du dir in deinem beispiel c als ein pointer betrachten der einmal auf a und dann auf b zeigt
am sonsten hast du (fast) recht - um das auiraeumen kuemmert sich nun der gc
ausnahmen sind wie gesagt alle funktionen die IDisposable implementieren
da muss man dann am ende
Close() oder Dispose(x) aufrufen - je nachdem was es ist
(da bietet es sich an "using(bla = fasel)" zu verwenden, dann wirds auch nach ende des blocks automatisch aufgeraeumt