Question - How is the using() pattern useful? What is IDisposable? How does it support deterministic finalization?
Answer -
The using() pattern is useful because it ensures that Dispose() will always be called when a disposable object (defined as one that implements IDisposable, and thus the Dispose() method) goes out of scope, even if it does so by an exception being thrown, and thus that resources are always released.