-3

大家都知道在清理非托管资源时使用using关键字。

如果类实现了IDisposable,那么我们可以将using关键字与该类的对象一起使用。但是,如果我想将using关键字与我自己的类的对象一起使用,那么我该如何使用它。

如果我必须IDisposable在我自己的类中实现,那么我还必须在我的类中为其Dispose()方法编写代码。using那么当我在方法中编写自己的代码时,在这里使用关键字就没有意义了Dispose()。那么我如何在用户定义的类型(如类和结构)中使用 using。

请用一些例子来解释。

4

3 回答 3

5

关键字的重点using是它为您调用 Dispose()您的类的实例,因此您不必在使用完它myDisposableObject.Dispose()时自己编写。它不能帮助您编写该方法——您仍然必须自己编写它来告诉框架您希望如何准确地处置非托管资源。

我不确定您正在寻找什么样的示例,因为您清楚地知道如何实现IDisposable接口及其Dispose()方法。我在这里只能说,如果您没有任何非托管资源要处置(或自己的成员IDisposable),那么不要实施IDisposable,也不要使用using. 该关键字仅保留用于方便地使用具有非托管资源的东西,否则这些资源需要手动清理。

于 2013-02-02T09:57:42.140 回答
2

的重点using不是要让你从实施中解脱出来IDisposable

目的using是让您确保当流正常或由于异常退出块时,对象将被正确处理。

于 2013-02-02T09:59:26.747 回答
0

using语句Dispose在块终止时调用使用对象的方法。请参阅this以了解如何编译 using 块。

但是,实现Dipose方法是您的责任,您必须在其中释放对象占用的资源。

于 2013-02-02T10:00:52.317 回答