【弱引用】
弱引用允许应用程序访问对象,同时也允许垃圾回收器收集相应的对象。如果不存在强引用,则弱引用的有限期只限于收集对象前的一个不确定的时间段。使用弱引用时,应用程序仍可对该对象进行强引用,这样做可防止该对象被收集。但始终存在这样的风险:垃圾回收器在重新建立强引用之前先处理该对象。
弱引用特别适合以下对象:占用大量内存,但通过垃圾回收功能回收以后很容易重新创建。
当用户切换到应用程序的其他部分时,可使用 WeakReference 类来创建对该树的弱引用,并销毁所有强引用。当用户切换回该树时,应用程序会尝试获得对该树的强引用,如果得到,就不必重新构造该树。
要对某个对象建立弱引用,请使用要跟踪的对象的实例创建一个 WeakReference。然后将 Target 属性设置为该对象,将该对象设置为 null。有关代码示例,请参见类库中的 WeakReference。
下面的示例使用短弱引用创建数据对象的缓存。此示例摘自为 WeakReference 类提供的一个更大的示例。
C#中,弱引用分为short和long2种,short弱引用会在对象不会用时target被赋为null,而long弱引用不会将target赋为null。
参考:http://msdn.microsoft.com/zh-cn/library/sk6k8h17(v=vs.90).aspx