Две точки приходят на ум:
безопасность (но, пока Вы генерируете строку, которая будет оценена сами, это могло бы быть надуманным вопросом)
Производительность: пока код, который будет выполняться, не неизвестен, он не может быть оптимизирован. (о JavaScript и производительности, конечно представление Steve Yegge )
Деструктор в C # переопределяет метод System.Object.Finalize
. Для этого вы должны использовать синтаксис деструктора. Если вручную переопределить Finalize
, появится сообщение об ошибке.
В основном то, что вы пытаетесь сделать с объявлением метода Finalize
, - это скрытие метода базового класса. Это заставит компилятор выдать предупреждение, которое можно отключить с помощью модификатора new
(если он собирался работать). Здесь важно отметить, что вы не можете одновременно переопределить
и объявить новый
член с одинаковым именем одновременно, поэтому имея и деструктор, и метод Finalize
приведет к ошибке (но вы можете ,
Класс MyClass
{
~ MyClass ()
{
.....
}
}
В VB.NET деструкторы реализуются путем переопределения Finalize метод класса System.Object.
Dispose
Они аналогичны любым другим методам в классе и могут быть вызваны явно, но у них есть особая цель - очистить объект. В методе dispose мы пишем код очистки для объекта. это важно, чтобы мы освободили все неуправляемые ресурсы в утилизации метод, такой как подключение к базе данных, файлы и т. д. Класс, реализующий Метод dispose должен реализовывать интерфейс IDisposable. должен вызвать метод GC.SuppressFinalize для объекта, которым он является удаление, если у класса есть дестуректор, потому что он уже выполнил работа по очистке объекта, то мусор не нужен сборщик для вызова метода Finalize объекта. Ссылка: http://msdn2.microsoft.com/en-us/library/aa720161 (VS.71) .aspx
Finalize
Метод Finalize действует как средство защиты для очистки ресурсов в событие, что ваш метод Dispose не вызывается. Вы должны только реализовать метод Finalize для очистки неуправляемых ресурсов. Вы не следует реализовывать метод Finalize для управляемых объектов, потому что сборщик мусора автоматически очищает управляемые ресурсы. Метод Finalize вызывается GC неявно, поэтому вы не можете вызовите его из своего кода.
Примечание: В C # метод Finalize нельзя переопределить, поэтому вам необходимо использовать деструктор, внутренняя реализация которого переопределит Метод Finalize в MSIL, но в VB.NET метод Finalize может быть переопределить, потому что он поддерживает метод деструктора.
Обновление: Интересный полусвязанный поток здесь .