日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

c#中的弱引用:WeakReference

發(fā)布時間:2023/12/31 综合教程 41 生活家
生活随笔 收集整理的這篇文章主要介紹了 c#中的弱引用:WeakReference 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原文:https://www.cnblogs.com/nele/p/7613324.html

1.強引用

我們實例化一個對象,直接引用了這個對象就是強引用。在這個對象被強引用的時,GC無法回收這個對象。
只有當(dāng)該對象所有的強引用都失去的時候,GC才會回收該對象。

2.弱引用

弱引用可以讓您保持對對象的引用,同時允許GC在必要時釋放對象,回收內(nèi)存。
一般使用場景:對象過大,并且不經(jīng)常訪問。這樣我們就可以創(chuàng)建一個弱引用,當(dāng)不常用該對象的時候,GC可以回收該對象,當(dāng)需要引用對象,可以先判斷弱引用的對象是不是存在,如果存在,就直接使用,如果弱引用的對象已經(jīng)被回收,那就重新創(chuàng)建一個對象來使用。

3.WeakReference

C#中采用WeakReference來創(chuàng)建弱引用。直接演示一個代碼:

Person person = new Person() { Id = 1, Name = "demo" };
            //實例化弱引用傳遞一個對象
            WeakReference wk = new WeakReference(person);
            Person p1;
            if (wk.IsAlive) //如果person沒有被回收
            {
                p1 = wk.Target as Person; //直接引用原對象
            }
            else //如果person已經(jīng)被回收了 重新創(chuàng)建一個對象
            {
                p1 = new Person() { Id = 1, Name = "demo" };
            }

4.總結(jié)

弱引用運行創(chuàng)建和使用對象,但是垃圾回收器運行時,就會回收對象釋放內(nèi)存。但始終存在這樣的風(fēng)險:垃圾回收器在重新建立強引用之前先處理該對象。但是在特定的情況下使用弱引用是很合理的。
使用WeakReference類創(chuàng)建弱引用。因為對象可能在任意時刻被回收,所以在引用前必須確認(rèn)它存在。

總結(jié)

以上是生活随笔為你收集整理的c#中的弱引用:WeakReference的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。