Close and Dispose - which to call?
.net
Solution
I want to clarify this situation.
According to Microsoft guidelines, it's a good practice to provide `Close` method where suitable. Here is a citation from Framework design guidelines
Consider providing method `Close()`, in addition to the `Dispose()`, if close is standard terminology in the area. When doing so, it is important that you make the `Close` implementation identical to `Dispose` ...
In most of cases `Close` and `Dispose` methods are equivalent. The main difference between `Close` and `Dispose` in the case of `SqlConnectionObject` is:
An application can call `Close` more than one time. No exception is generated.
If you called `Dispose` method `SqlConnection` object state will be reset. If you try to call any method on disposed `SqlConnection` object, you will receive exception.
That said:
- If you use connection object one time, use `Dispose`. A `using` block will ensure this is called even in the event of an exception.
- If connection object must be reused, use `Close` method.
Problem
Having read the threads Is SqlCommand.Dispose enough? and Closing and Disposing a WCF Service I am wondering for classes such as SqlConnection or one of the several classes inheriting from the Stream class does it matter if I close Dispose rather than Close?