完善主体资料,免费赠送VIP会员!
* 主体类型
* 企业名称
* 信用代码
* 所在行业
* 企业规模
* 所在职位
* 姓名
* 所在行业
* 学历
* 工作性质
请先选择行业
您还可以选择以下福利:
行业福利,领完即止!

下载app免费领取会员

NULL

ad.jpg

二次开发教程:C# 使用弱引用释放静态资源

发布于:2019-07-25 15:13:28

网友投稿

更多

    class Program

    {

        static void Main(string[] args)

        {

            TestClass.Defalut.i = 5;

            //输出5

            Console.WriteLine(TestClass.Defalut.i);

            GC.Collect();

            //输出0,表示Default已经是重新生成的,之前的对象已经被回收


            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;

    }

本文版权归腿腿教学网及原创作者所有,未经授权,谢绝转载。

未标题-1.jpg

上一篇:二次开发教程:WPF 模板选择器

下一篇:二次开发教程:WPF使用其他dll里的样式

60acb4e0ef112.png