I'm still relatively new to C# and have only within the past several days been exposed to "IDisposables". I can grasp the concept of the using block to take care of objects which must be disposed of without needing to manually remember to call the .Dispose() method - convenient!
Let's say though that I start with a new SqlConnection which I handle within a using statement. Within that block of code I create some additional IDisposables, for example a SqlDataAdapter. Does that adapter need it's own using statement?
For example, if I have code...
using (SqlConnection myConnection = new SqlConnection()) { SqlCommand myCommand = new SqlCommand(); SqlDataAdapter myAdapter = new SqlDataAdapter(); // Do things } ... will myCommand and myAdapter be disposed of when myConnection is disposed (since they are within the scope of that code block)? Or do I need multiple using statements, maybe something like:
using (SqlConnection myConnection = new SqlConnection()) { using (SqlCommand myCommand = new SqlCommand()) { using (SqlDataAdapter myAdapter = new SqlDataAdapter()) { // Do things } } }
using() {}. The main plusses of this are readability and exception-safety.