zoukankan      html  css  js  c++  java
  • C#析构函数与垃圾回收

    析构函数基本语法

    C#
    class Car
    {
        ~ Car()  // destructor
        {
            // cleanup statements...
        }
    }

    析构函数说明

    • 不能在结构中定义析构函数。只能对类使用析构函数。

    • 一个类只能有一个析构函数。

    • 无法继承或重载析构函数。

    • 无法调用析构函数。它们是被自动调用的。

    • 析构函数既没有修饰符,也没有参数。

    • 析构函数跟构造函数相反 构造函数可控制执行 析构函数不可控制

    托管资源和非托管资源

    托管资源指的是.NET可以自动进行回收的资源,主要是指托管堆上分配的内存资源。托管资源的回收工作是不需要人工干预的,有.NET运行库在合适调用垃圾回收器进行回收。

             非托管资源指的是.NET不知道如何回收的资源,最常见的一类非托管资源是包装操作系统资源的对象,例如文件,窗口,网络连接,数据库连接,画刷,图标等。这类资源,垃圾回收器在清理的时候会调用Object.Finalize()方法。默认情况下,方法是空的,对于非托管对象,需要在此方法中编写回收非托管资源的代码,以便垃圾回收器正确回收资源。

             在.NET中,Object.Finalize()方法是无法重载的,编译器是根据类的析构函数来自动生成Object.Finalize()方法的,所以对于包含非托管资源的类,可以将释放非托管资源的代码放在析构函数。

  • 相关阅读:
    李白—烂尾楼题记
    [原创]网络图片延迟加载实现,超越jquery2010年3月26日
    利用反射,泛型,扩展方法快速获取表单值到实体类
    断点续传 到底是很么
    认识LINQ
    Gridview控件用法大总结
    网站性能优化总结。
    JQ小技巧
    自己写的jq_3个小插件
    MOSS中SPuser类的使用
  • 原文地址:https://www.cnblogs.com/zhangchengye/p/5142955.html
Copyright © 2011-2022 走看看