Ich war vor kurzem durch eine Garbage Collection Artikel und beschlossen, mitzuspielen und versuchen, ein besseres Verständnis zu gewinnen. Ich codierte das Folgende, spielte mit der using
Anweisung herum, war aber mit den Ergebnissen überrascht ... Ich erwartete e.Parent.Name außerhalb des Verwendungsblocks, um ka-blooyy zu gehen.C# Speicherzuweisung/Freigabe-Frage in Bezug auf Umfang
Was genau passiert hier?
static void Main(string[] args)
{
Employee e = new Employee();
using (Parent p = new Parent())
{
p.Name = "Betsy";
e.Parent = p;
Console.WriteLine(e.Parent.Name);
}
Console.WriteLine(e.Parent.Name);
Console.ReadLine();
}
public class Employee
{
public Parent Parent;
}
public class Parent : IDisposable
{
public string Name;
public void Dispose()
{
Console.WriteLine("Disposing Parent");
}
}
Sie könnten in Raymond Chen letzten Blog-Artikel interessiert sein [Jeder denkt über Garbage Collection der falsche Weg] (http://blogs.msdn.com/b/oldnewthing/archive/2010/08/09/10047586 .aspx). –