У меня есть класс с финализатором. Но так как я всегда вызываю Dispose()
, а Dispose()
вызывает GC.SupressFinalize(this)
, я думаю, что мой объект никогда не попадает в очередь на финализацию. Финализатор просто используется как задний ход на случай, если другой пользователь класса забудет позвонить Dispose()
.
Есть ли какое-то снижение производительности за простую реализацию финализатора, даже если он никогда не вызывался и объект никогда не попадает в очередь финализации?
Раньше я так не думал, но на странице 102 Effective C #: второе издание Билла Вагнера говорится: «Даже если его никогда не вызывать, присутствие финализатора действительно приводит к довольно высокой производительности штраф за ваши типы. "