首页 > 代码库 > 弱引用

弱引用

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

用法:先用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

 

弱引用