所以我有这个简单的Bell类,我正在测试垃圾收集:
public class Bell
{
public void Ring()
{
Console.WriteLine("Ding ding");
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在下面运行此代码段,则不会收集垃圾
class Program
{
private static WeakReference reference;
private static void Main()
{
Console.WriteLine("Starting");
var bell = new Bell();
reference = new WeakReference(bell);
bell = null;
GC.Collect();
Console.WriteLine("Object still alive: {0}", reference.IsAlive);
if (reference.Target == null)
{
Console.WriteLine("Bell is no more!");
}
else
{
{
var theBell = (Bell)reference.Target;
theBell.Ring();
}
}
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我只检查reference.IsAlive如下,它是垃圾收集
class Program
{
private static WeakReference reference;
private static void Main() …Run Code Online (Sandbox Code Playgroud)