This is a mirror of official site: http://jasper-net.blogspot.com/

Как применять IDisposable и финализаторы: 3 простых правила

| Tuesday, April 6, 2010
После рассказа об утечке памяти и правильной реализации событий размещаю еще один перевод понравившейся мне статьи на тему управления памятью. Я видел несколько разных реализаций Dispose паттерна, иногда они даже противоречили друг другу. В этой статье автор представил хорошее и четкое разъяснение, когда следует реализовывать интерфейс IDisposable, когда финализаторы, а когда — все вместе.

Как применять IDisposable и финализаторы: 3 простых правила

Документация Microsoft о применении IDisposable довольно запутанная. На самом деле она упрощается до трех простых правил.

Правило первое: не применять (до тех пор, пока это действительно не понадобится)

Реализуя интерфейс IDisposable, вы не создаете деструктор. Помните, что в среде .NET есть сборщик мусора, который работает достаточно хорошо, чтобы не присваивать null многочисленным переменным.

Существует только две ситуации, когда необходимо реализовывать IDisposable. Посмотрите на класс и определите, нужен ли вам этот интерфейс:

   * В классе есть неуправляемые ресурсы
   * В классе есть управляемые (IDisposable) ресурсы


Обратите внимание, что ресурсы должны освобождать только те классы, которым эти ресурсы принадлежат. В частности, класс может иметь ссылку на общий ресурс — в этом случае вы не должны освобождать его, поскольку другие классы могут продолжать использовать этот ресурс.

Read more: habrahabr.ru

Posted via email from jasper22's posterous

0 comments: