C# IDisposable接口与using关键字

简介: 本文目录1. 简介2. 示例

1. 简介

接口其实就是一种规范,一种标准,实现该接口的类要遵循该标准,所以就具备该接口标准要求的功能或特性。


C#中的IDisposable接口就是一种非常有用且非常常用的接口,该接口要求类实现Dispose()方法,在该方法中释放占用的资源。如果在析构函数中释放资源要等到垃圾回收时,太晚了。


但是手动调用Dispose方法稍微有点麻烦,而且也怕忘了调用,这样资源也得不到及时释放,所以可以使用using关键字,using关键字代码块的末尾会自动调用Dispose方法。


2. 示例

class Database:IDisposable
    {
        public void visitDatabase()
        {
            Console.WriteLine("开始访问数据库");
        }
        public void Dispose()
        {
            Console.WriteLine("释放数据库连接资源");
        }
        //主函数,测试入口
        static void Main(string[] args)
        {
            //手工释放
            Database db = new Database();
            db.visitDatabase();
            db.Dispose();
            //using关键字自动释放
            using (Database db2 = new Database())
            {
                db2.visitDatabase();
            }
            //using关键字自动释放
            Database db3 = null;
            using (db3 = new Database())
            {
                db3.visitDatabase();
            }
        }
    }

image.png

相关文章
|
8月前
|
C#
30.C# 关键字 this初步学习
30.C# 关键字 this初步学习
48 1
|
8月前
|
IDE C# 开发工具
C#系列之接口介绍
C#系列之接口介绍
|
8月前
|
C#
28.c#关键字base初步学习
28.c#关键字base初步学习
43 0
|
8月前
|
C#
27.c#关键字sealed修饰类
27.c#关键字sealed修饰类
82 0
|
1月前
|
开发框架 监控 .NET
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
通过本文的介绍,希望您能深入理解并掌握ASP.NET WebForms中调用ASMX WebService接口的方法和技巧,并在实际项目中灵活运用这些技术,提高开发效率和应用性能。
43 5
|
3月前
|
开发框架 Cloud Native .NET
10 个 C# 关键字和功能
10 个 C# 关键字和功能
74 8
|
3月前
|
C#
C# 接口(Interface)
接口定义了所有类继承接口时应遵循的语法合同。接口定义了语法合同 "是什么" 部分,派生类定义了语法合同 "怎么做" 部分。 接口定义了属性、方法和事件,这些都是接口的成员。接口只包含了成员的声明。成员的定义是派生类的责任。接口提供了派生类应遵循的标准结构。 接口使得实现接口的类或结构在形式上保持一致。 抽象类在某种程度上与接口类似,但是,它们大多只是用在当只有少数方法由基类声明由派生类实现时。 接口本身并不实现任何功能,它只是和声明实现该接口的对象订立一个必须实现哪些行为的契约。 抽象类不能直接实例化,但允许派生出具体的,具有实际功能的类。
57 9
|
4月前
|
C# 索引
C# 一分钟浅谈:接口与抽象类的区别及使用
【9月更文挑战第2天】本文详细对比了面向对象编程中接口与抽象类的概念及区别。接口定义了行为规范,强制实现类提供具体实现;抽象类则既能定义抽象方法也能提供具体实现。文章通过具体示例介绍了如何使用接口和抽象类,并探讨了其实现方式、继承限制及实例化差异。最后总结了选择接口或抽象类应基于具体设计需求。掌握这两者有助于编写高质量的面向对象程序。
153 5
|
5月前
|
C# 索引
C#中的virtual和override关键字
C#中的virtual和override关键字
54 3
|
5月前
|
API C# 数据库
SemanticKernel/C#:实现接口,接入本地嵌入模型
SemanticKernel/C#:实现接口,接入本地嵌入模型
99 1