open System
let WeakReferenceExample() =
let mutable obj = new Object();
let weak = new WeakReference(obj);
GC.Collect();
Console.WriteLine("IsAlive: {0}\nobj <> null is {1}\n---",weak.IsAlive,obj <> null);
obj <- null;
GC.Collect();
Console.WriteLine("IsAlive: {0}",weak.IsAlive);
WeakReferenceExample()
Console.ReadKey()
从Rx In Action书本样本中翻译而来。上面的代码在运行时提供以下输出,与在C#中编译并运行它时得到的输出不同。
IsAlive: True
obj <> null is True
---
IsAlive: True
为什么不收集弱引用?