Пытаясь лучше понять оператор using

Я прочитал пару статей об операторе using, чтобы попытаться понять, когда его следует использовать. Похоже, что большинство людей считает, что его следует использовать как можно чаще, поскольку он гарантирует удаление неиспользуемых объектов.

Проблема в том, что все примеры всегда показывают что-то вроде этого:

using (SqlCommand scmFetch = new SqlCommand())
{
    // code
}

Это имеет смысл, но это такой маленький фрагмент кода. Что мне делать при выполнении запроса к базе данных? Какие все шаги? Будет ли это выглядеть примерно так:

string sQuery = @"
    SELECT [ID], [Description]
    FROM [Zones]
    ORDER BY [Description] ";

DataTable dtZones = new DataTable("Zones");

using (SqlConnection scnFetchZones = new SqlConnection())
{
    scnFetchZones.ConnectionString = __sConnectionString;
    scnFetchZones.Open();

    using (SqlCommand scmdFetchZones = new SqlCommand())
    {
        scmdFetchZones.Connection = scnFetchZones;
        scmdFetchZones.CommandText = sQuery;

        using (SqlDataAdapter sdaFetch = new SqlDataAdapter())
        {
            sdaFetch.SelectCommand = scmdFetchZones;
            sdaFetch.Fill(dtZones);
        }
    }

    if (scnFetchZones.State == ConnectionState.Open)
        scnFetchZones.Close();
}

Я хочу знать следующее:
• Можно ли иметь 4, 5, 10 вложенных операторов using, чтобы гарантировать удаление всех объектов?
{ {1}} • В какой момент я делаю что-то не так и следует ли мне рассмотреть вопрос о пересмотре?
• Если ревизия является необходимой из-за слишком большого количества вложенных операторов using, каковы мои варианты? ?

Вы можете получить внушительную иерархию, но ваш код должен быть достаточно эффективным, верно? Или вы должны поместить, например, только объект SqlDataAdapter в оператор using, и он каким-то образом обеспечит удаление всех остальных объектов?

Спасибо.

5
задан that0th3rGuy 15 November 2011 в 08:01
поделиться