Googler

两情相悦,又岂在朝朝暮暮。

[转]泛型弱引用

 

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  阅读(273)  评论(0编辑  收藏  举报

导航

Apple/苹果笔记本 Mac Air MC968CH/A 行货在保 I5 11寸 超级本