默認對象實例化後得到的都是強引用,不過有些時候對於一些複雜的大對象,出於性能考慮,并不希望進行頻繁的初始化,此時弱引用就可以派上用場。
用法:先用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
 相关文章
                            相关文章