Name
IDisposable
Synopsis
This interface provides a last-ditch cleanup hook with well-known timing semantics (similar in concept to a C++ destructor). This is called deterministic finalization.
As part of normal garbage-collection operation, the CLR looks for (and calls if available)
the object’s Finalize
method right before it
removes an object from heap memory.
Unfortunately, because the
CLR may not garbage-collect the object as soon
as it becomes available for collection, objects may hold onto resources
for longer than necessary. The IDisposable
interface is
intended to work with language constructs to let you
ensure that key resources are released in a time-efficient manner.
In C#, any object whose type implements the IDisposable
interface must have a corresponding Dispose()
method defined
for it. This in turn makes the object eligible for use in the C# using
block declaration. For more details, see Section 2.9 in Chapter 2.
If a type provides a Finalize
method, then it should
also inherit this interface and provide a corresponding Dispose()
method. In addition, once the Dispose()
method is
called, part of its implementation should be to call the
GC.SuppressFinalize()
method to prevent the garbage
collector from finalizing this object again when garbage collection occurs.
public interface IDisposable { // Public Instance Methods public method void Dispose(); }
Implemented By
Multiple types
Get C# in a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.