首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解IDisposable

了解IDisposable
EN

Stack Overflow用户
提问于 2013-04-15 03:36:13
回答 4查看 195关注 0票数 2

我有一个类,它有一个DbConnection变量。在类构造函数中,我给它分配了一个新的DbConnection实例。既然它是一个IDisposable,我是否应该在我的类的析构函数(或其他地方)中对它做些什么?

我知道,如果使用它作为一段代码,我应该将它包装在using块中,尽管我不确定为什么,但在这里,我将它赋值一次,并在对我的类的所有调用中使用它。

如果有什么不同的话,我使用的是C# 4.0。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-15 03:40:27

既然它是一个IDisposable,我是否应该在我的类的析构函数(或其他地方)中对它做些什么?

不,通常你不会有终结器/析构函数-它们是almost never needed in modern .NET

但是,您的类应该实现IDisposable,并在那里处理数据库连接。这样一来,你基本上就把处置的责任交给了创建你的类的任何人。

票数 7
EN

Stack Overflow用户

发布于 2013-04-15 03:39:29

所有处理非托管资源的类都实现了IDisposable。这样,您就可以确保非托管资源在通过using() {}或调用Dispose-method使用后被释放。

来自MSDN

代码语言:javascript
复制
IDisposable Interface - Defines a method to release allocated resources.
票数 0
EN

Stack Overflow用户

发布于 2013-04-15 03:41:54

这篇文章可能会有帮助-- Implementing a Dispose Method

基本上,实现IDisposable的类依赖于一些资源,当不再需要这些资源时,需要对这些资源进行油炸。在您的示例中,这是到数据库的连接。让连接一直处于打开状态是不明智的。如果你在using代码块中使用它-它将在代码块的末尾处理对象(它是try finally构造的语法糖)。如果您将其作为对象字段/属性-最好的想法是让您的类也实现IDisposable,并确保您的类的用户正确地处理它。

附注-你可以在终结器中处理你的对象,但是对于正常的工作流程,强烈不推荐这样做,所以请不要这样做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16003425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档