当前位置: 首页 > news >正文

C# 编程基础:深入解析构造函数与析构函数

在C#中,构造函数和析构函数是特殊的成员函数,它们分别在对象创建和销毁时自动调用。

构造函数

构造函数是一个在创建对象时自动调用的特殊方法,用于初始化对象的状态。它可以有参数,也可以没有参数。一个类可以有一个或多个构造函数,这称为构造函数重载。

  1. 无参构造函数

    public class MyClass
    {public MyClass(){// 初始化代码}
    }
    
  2. 带参数的构造函数

    public class MyClass
    {private int value;public MyClass(int val){value = val;}
    }
    
  3. 构造函数重载

    public class MyClass
    {private int value;private string text;public MyClass(){// 默认构造函数}public MyClass(int val){value = val;}public MyClass(string txt){text = txt;}public MyClass(int val, string txt){value = val;text = txt;}
    }
    
  4. 静态构造函数

    静态构造函数用于初始化静态成员。它在类的任何静态成员被访问之前自动调用,并且只调用一次。静态构造函数不能带参数,也不能被显式调用。

    public class MyClass
    {private static int staticValue;static MyClass(){staticValue = 42; // 静态初始化代码}
    }
    
析构函数

析构函数是一个在对象被垃圾回收时自动调用的特殊方法,用于执行清理操作,如释放非托管资源。析构函数在对象的生命周期结束时被调用,并且不能被显式调用或重载。

  1. 析构函数的定义

    析构函数的名称与类名相同,但前面有一个波浪号(~)。

    public class MyClass
    {// 其他成员和方法...~MyClass(){// 清理代码,如释放非托管资源}
    }
    
  2. 使用IDisposable接口进行资源管理

    虽然析构函数可以用于释放资源,但更好的做法是实现IDisposable接口,并在Dispose方法中释放资源。这允许在对象不再需要时立即释放资源,而不是等待垃圾回收器。

    public class MyClass : IDisposable
    {private bool disposed = false;// 其他成员和方法...public void Dispose(){Dispose(true);GC.SuppressFinalize(this); // 防止垃圾回收器再次调用析构函数}protected virtual void Dispose(bool disposing){if (!disposed){if (disposing){// 释放托管资源}// 释放非托管资源disposed = true;}}~MyClass(){Dispose(false); // 析构函数中的清理代码}
    }
    
http://www.lryc.cn/news/474045.html

相关文章:

  • 中国大学慕课视频资源分析
  • 简单的kafkaredis学习之redis
  • 前端性能优化全攻略:提升用户体验,加速页面加载
  • 手机玩亚托莉:我挚爱的时光!手机推gal、躺床玩漫改gal教程
  • metasploit/modules/evasion 有哪些模块,以及具体使用案例
  • 网络安全入门文档-虚拟机配置篇
  • class 041 最大公约数、同余原理
  • token的创建与解析,并配合拦截器使用
  • Oracle 数据库历史备份数据恢复验证
  • 【网络面积篇】TCP断开连接(笔记)
  • 下跌多少才能涨回来?
  • 【AAOS】【源码分析】CarSystemUI -- CarSystemBar
  • [供应链] 邀请招标
  • VS2017+Qt5.12.9+CMake3.30.2编译VTK 9.2.0
  • Java线程CPU占用过高如何排查?
  • uniapp推送配置流程
  • qt QPicture详解
  • ScheduledFuture Source Code Analysis
  • 【CSS】CSS 样式重置 (normalize.css 和 reset.css) 和通用样式配置
  • 自动化机器学习(AutoML)详解
  • Linux: network:erspan0
  • 第11课 计算思维
  • ACL, ACL Workshop, ACL Findings 解释
  • 《使用Gin框架构建分布式应用》阅读笔记:p272-p306
  • 【搜索引擎】俄罗斯搜索引擎yandex
  • 加密源代码|html代码如何加密保护?3分钟学会4种源代码加密妙招,代码人必看
  • Jetson Orin NX平台自研载板 IMX477相机掉线问题调试记录
  • spring-boot(整合mybatisplus、及常见注解)
  • 深度学习:yolov3的使用--建立模型
  • 关于我、重生到500年前凭借C语言改变世界科技vlog.13——深入理解指针(3)