Rozważmy następującą metodę:Czy muszę zatrzymać stoper, jeśli zbliża się metoda zamknięcia?
DoTimeIntensiveOperation()
{
var t = new Stopwatch();
foreach(var element in a_very_long_array)
{
DoATimeConsumingTask(element);
}
Console.WriteLine("Took me " + t.Elapsed);
return;
}
muszę zadzwonić t.Stop()
przed powrotem?
O ile mi wiadomo, niszczyciel zniszczy wszystko, co nie ma łańcucha odniesienia, powracając do głównej metody. Jedynym odniesieniem do utworzonego jest t
, więc gdy DoTimeIntensiveOperation
, t
zostanie zwolniony, a Stopwatch
będzie mógł zostać zniszczony. Ale czy fakt, że wciąż "tyka" przeszkadza GC?