[转]泛型弱引用

[转]泛型弱引用

 

 
    
public class WeakReference < T > : IDisposable
{
private GCHandle handle;
private bool trackResurrection;

public WeakReference(T target) : this (target, false ) { }

public WeakReference(T target, bool trackResurrection)
{
this .trackResurrection = trackResurrection;
this .Target = target;
}

~ WeakReference()
{
Dispose();
}

public void Dispose()
{
handle.Free();
GC.SuppressFinalize(
this );
}

public virtual bool IsAlive
{
get { return (handle.Target != null ); }
}

public virtual bool TrackResurrection
{
get { return this .trackResurrection; }
}

public virtual T Target
{
get
{
object o = handle.Target;
if ((o == null ) || ( ! (o is T)))
return default (T);
else
return (T)o;
}
set
{
handle
= GCHandle.Alloc(value, this .trackResurrection ? GCHandleType.WeakTrackResurrection : GCHandleType.Weak);
}
}
}

 

 

 

posted on 2010-06-10 12:51 RockyLOMO 阅读(...) 评论(...) 编辑 收藏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值