弱引用_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 弱引用

弱引用

 2014/8/31 16:53:59  yetsen  程序员俱乐部  我要评论(0)
  • 摘要:默認對象實例化後得到的都是強引用,不過有些時候對於一些複雜的大對象,出於性能考慮,并不希望進行頻繁的初始化,此時弱引用就可以派上用場。用法:先用WeakReference包裝複雜對象,到需要該複雜對象的時候,檢查一下弱引用的IsAlive屬性,如果true,就可以通過Target直接得到複雜對象,省去了實例化的過程。簡單的例子:staticvoidMain(string[]args){varweakRef=GetWeakRef();GC.Collect();if(weakRef.IsAlive
  • 标签:

默認對象實例化後得到的都是強引用,不過有些時候對於一些複雜的大對象,出於性能考慮,并不希望進行頻繁的初始化,此時弱引用就可以派上用場。

用法:先用WeakReference包裝複雜對象,到需要該複雜對象的時候,檢查一下弱引用的IsAlive屬性,如果true,就可以通過Target直接得到複雜對象,省去了實例化的過程。

簡單的例子

        static void Main(string[] args)
        {
            var weakRef GetWeakRef();
 
            GC.Collect();
 
            if (weakRef.IsAlive)
            {
                var obj weakRef.Target as ComplexObject;
                Console.WriteLine(obj);
            }
            else
            {
                Console.WriteLine("Reference is not available.");
            }
 
            Console.Read();
        }
 
        private static WeakReference GetWeakRef()
        {
            return new WeakReference(new ComplexObject());
        }

 

本例中如果調用了GC回收,輸出爲

Reference is not available.

如果不調用GC回收,輸出爲

ConsoleApplication1.ComplexObject

 

  • 相关文章
发表评论
用户名: 匿名