完善主體資料,免費贈送VIP會員!
* 主體類型
* 企業(yè)名稱
* 信用代碼
* 所在行業(yè)
* 企業(yè)規(guī)模
* 所在職位
* 姓名
* 所在行業(yè)
* 學歷
* 工作性質(zhì)
請先選擇行業(yè)
您還可以選擇以下福利:
行業(yè)福利,領完即止!

下載app免費領取會員

NULL

ad.jpg

二次開發(fā)教程:C# 使用弱引用釋放靜態(tài)資源

發(fā)布于:2019-07-25 15:13:28

網(wǎng)友投稿

更多

    class Program

    {

        static void Main(string[] args)

        {

            TestClass.Defalut.i = 5;

            //輸出5

            Console.WriteLine(TestClass.Defalut.i);

            GC.Collect();

            //輸出0,表示Default已經(jīng)是重新生成的,之前的對象已經(jīng)被回收


            Console.WriteLine(TestClass.Defalut.i);


            TestClass1.Defalut.i = 5;

            //輸出5

            Console.WriteLine(TestClass1.Defalut.i);

            GC.Collect();

            //輸出5

            Console.WriteLine(TestClass1.Defalut.i);


            Console.ReadLine();

        }

    }


    public class TestClass

    {

        private static readonly object locker = new object();


        private static WeakReference _defalut = null;


        public static TestClass Defalut

        {

            get

            {

                if(_defalut==null||!_defalut.IsAlive)

                {

                    lock(locker)

                    {

                        TestClass tc = new TestClass();

                        _defalut = new WeakReference(tc);

                    }

                }

                return _defalut.Target as TestClass;

            }

        }

        private TestClass()

        {


        }


        public int i = 0;

    }

    public class TestClass1

    {

        private static readonly object locker = new object();


        private static TestClass1 _defalut = null;


        public static TestClass1 Defalut

        {

            get

            {

                if (_defalut == null)

                {

                    lock (locker)

                    {

                        _defalut  = new TestClass1();

                    }

                }

                return _defalut;

            }

        }

        private TestClass1()

        {


        }


        public int i = 0;

    }

本文版權(quán)歸腿腿教學網(wǎng)及原創(chuàng)作者所有,未經(jīng)授權(quán),謝絕轉(zhuǎn)載。

未標題-1.jpg

上一篇:二次開發(fā)教程:WPF 模板選擇器

下一篇:二次開發(fā)教程:WPF使用其他dll里的樣式

60acb4e0ef112.png