Интересы общего характера: Finalize() и Lazy - C#

Узнай цену своей работы

Формулировка задачи:

Читаю Троелсена. Появились некоторые вопросы. Чтобы не создавать две темы, решил сделать одну и назвать ее более обобщенно. Итак: 1. Типы, которые имеют неуправляемые ресурсы. Троелсен предлагает наследоваться от IDisposable, чтобы была возможность у пользователя освобождать неуправляемые ресурсы вручную + сделать финализатор, где также происходит освобождение этих же ресурсов. Я так понял, что если я делаю класс финализируемым, то создается лишняя таблица в памяти для сборщика ресурсов, и соответственно происходят лишнии инструкции, если все таки уничтожать объект будет сборщик. Вопрос в том, зачем тогда делать финализатор, если можно обойтись IDisposable? Ну ответ очевиден - для того, чтобы если человек забыл освободить, то сборщик мусора все равно освободит. Но тогда человек получается идиот, если в документации по использованию данного класса будет черным по белому написано, что освобождать НУЖНО вручную. 2. Смотрю отложенную инициализацию с помощью системного класса Lazy<T>. Троелсен пишет: В частности, для получения фактических хранимых данных (в этом случае — объекта AllTracks, поддерживающего 10 000 объектов Song) мы должны использовать доступ*ное

только для чтения

свойство Value класса Lazy<T> ." Вопрос следующий, как это свойство может быть только для чтения, если свойства только для чтения могут быть инициализированы только в конструкторе класса? Получается, если оно так и есть, то это уже нифига не отложенная инициализация, и инициализация объекта класса T будет происходить при конструировании класса Lazy<T>. Смотрел объявления в классе Lazy<T>. Value там

не

стоит только для чтения. Ошибка Троелсена? Или я что-то не догоняю?

Решение задачи: «Интересы общего характера: Finalize() и Lazy»

textual
Листинг программы
class NewYear
{
    public int DaysLeft
    {
        get { var d = DateTime.Now; return (new DateTime(d.Year+1, 1, 1) - d.Date).Days; }
    }
}

Оцени полезность:

12   голосов , оценка 4 из 5