Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > использование using


Автор: Skalik 31.1.2009, 15:27
всем привет!!
встретил вот такой код:
Код

using(Graphics g =CreateGraphics())
            {
                g.SmoothingMode = SmoothingMode.AntiAlias;
                g.DrawEllipse(_pen2, _conductor);
                g.FillEllipse(_brush3, _conductor);
            }
 
возник вопрос, что дает  использование using в этом случае??
потому что вот так работает также:
Код

                Graphics g =CreateGraphics();
                g.SmoothingMode = SmoothingMode.AntiAlias;
                g.DrawEllipse(_pen2, _conductor);
                g.FillEllipse(_brush3, _conductor);
 

Автор: proxeter 31.1.2009, 16:29
Насколько я понимаю такая конструкция используется для сокращения зоны видимости экземпляра g.
То есть после данной области Garbage Collector вправе без нареканий удалить данный экземпляр и освободить память, занимаемую им.

Автор: Любитель 31.1.2009, 16:43
Цитата(proxeter @  31.1.2009,  16:29 Найти цитируемый пост)
Насколько я понимаю такая конструкция используется для сокращения зоны видимости экземпляра g.

Вообщем-то верно - но не для этого.

Цитата(proxeter @  31.1.2009,  16:29 Найти цитируемый пост)
То есть после данной области Garbage Collector вправе без нареканий удалить данный экземпляр и освободить память, занимаемую им. 

Ну, он как раз вряд ли это будет спешить делать. Более того - даже не будет иметь на это права, если внутри юзинга мы присвоим "внешней" переменной наш g.

По теме - читаем документацию по юзингу/диспоузу и пр.. Данный код разворачивается в:
Код

try
{
    Graphics g =CreateGraphics();
    // ...
}
finally
{
    g.Dispose();
}

Автор: archeg 31.1.2009, 20:10
Цитата(proxeter @ 31.1.2009,  16:29)
Насколько я понимаю такая конструкция используется для сокращения зоны видимости экземпляра g.

Самое прикольное объяснение использования using, из тех которые я слышал  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)