每个人都知道在我们想要清理非托管资源时使用using关键字。
如果类实现IDisposable
,那么我们可以将using
关键字与该类的对象一起使用。但是,如果我想在我自己的类的对象中使用using
关键字,那么我该如何使用它。
如果我必须在我自己的类中实现IDisposable
,那么我还必须在我的班级中为其Dispose()
方法编写代码。当我在using
方法中编写自己的代码时,没有必要在这里使用Dispose()
关键字。那么我如何在用户定义的类型(如类和结构)中使用。
请用一些例子来解释。
答案 0 :(得分:5)
using
关键字的重点在于,为您的类实例调用 Dispose()
,因此您无需编写myDisposableObject.Dispose()
你完成使用它自己。它无法帮助您编写该方法 - 您仍然必须自己编写它来告诉框架您希望如何处理非托管资源。
我不确定您正在寻找什么样的示例,因为您清楚地知道如何实现IDisposable
接口及其Dispose()
方法。我在这里可以说的是,如果你没有任何非托管资源可以处置(或者是自己为IDisposable
的成员),那么就不要实现IDisposable
,也不要使用using
}。该关键字仅保留用于方便地使用做具有非托管资源的内容,否则需要手动清理。
答案 1 :(得分:2)
using
的目的不是让您免于实施IDisposable
。
using
的要点是允许您确保当流程正常或由于异常而退出块时对象将被正确处理。
答案 2 :(得分:0)
using
语句在块终止时调用所使用对象的Dispose
方法。请参阅this以了解如何编译使用块。
但是,您有责任实施Dipose
方法,您必须释放该对象占用的资源。