Code: Select all
Program.cs
Code: Select all
internal class Program
{
private static void Main(string[] args)
{
var testObject = new ZZTest();
Console.ReadLine();
Console.WriteLine(testObject.ToString());
}
}
< /code>
ZZTest.cs
Code: Select all
public class ZZTest
{
private string testString = "test";
}
< /code>
If I place a breakpoint on this line in the Main
Code: Select all
Console.ReadLine();
< /code>
and take a heap snapshot, it shows the ZZTest

Question
Since the variable testObject ist zu diesem Zeitpunkt noch im Bereich und somit wird auf das Objekt immer noch verwiesen. Warum sollte es als toter Objekt widerspiegeln? In dieser Frage handelt es sich um die Müllsammlung, die hier nicht die Frage ist. In der anderen Frage heißt es auch: "Der Jitter kann die Tabelle verwenden, um festzustellen, dass eine solche lokale Variable nicht mehr nützlich ist, je nachdem, wie weit das Programm in dieser Main () -Methode vorgegangen ist, bevor es einen Anruf getätigt hat." In diesem Fall ist die Variable nach dem Haltepunkt erneut , sodass sie sehr immer noch "nützlich" ist.