• IDisposable实现的方法什么时候被执行的


    一,以什么是GC所认为的垃圾?

    不再被应用程序的root或者别的对象所引用的对象就是已经死亡的对象,即所谓的垃圾,需要被回收

    二,在仓储设计中,我们都知道非托管资源的手动释放,但继承的IDisposable的方法在什么时候实现?

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace GcDemo
    {
        class Program
        {
            static void Main(string[] args)
            {
                A a = new A();
                var d = a.TT.T_Info_College.ToList();
                //C c = new C();
                //var e=  c.TT.T_Info_College.ToList();
                Console.ReadKey();
            }
        }
        public class A : IDisposable
        {
            public TestEntities TT { get { return new TestEntities(); } }
             ~A() 
            {
                Console.WriteLine("析构A");
                var d = TT.T_Info_College.ToList();
                Console.ReadKey();
            }
            public A()
            {
                var tt = TT.T_Info_CollegeDetail.ToList();
            }
            public void Dispose()
            {
                Console.WriteLine("A");
                TT.Dispose();
            }
        }
    
        public class C
        {
            public TestEntities TT { get { return new TestEntities(); } }
            ~C()
            {
                Console.WriteLine("析构C");
                TT.Dispose();
                var tt = TT.T_Info_College.ToList();
                Console.ReadKey();
            }
            public C()
            {
                var c = TT.T_Info_CollegeDetail.ToList();
            }
        }
    }

     三,根据以上代码,

    1,两个输出都是托管资源已经被释放,则报错,

    2,而Dispose执行是在析构函数之前,也就是在GC通过回收托管资源之前(GC是调用析构函数释放托管资源)

  • 相关阅读:
    多屏共享
    md5-linux_shell
    2017年会所得
    linux无线网络配置_转
    (转)台式机华硕主板双显卡切换,怎么舒服怎么来
    Apache FtpServer 实现文件的上传和下载
    (转载)Windows 上搭建Apache FtpServer
    Eclipse常用设置
    博客园文章样式修改
    黑马公社学习
  • 原文地址:https://www.cnblogs.com/May-day/p/7576325.html
Copyright © 2020-2023  润新知