В IL всегда есть финализатор - System.Object.Finalize () существует в каждом классе, поэтому, если вы создаете собственный класс, у него есть финализатор, который вы хотите подавить. При этом не все объекты помещаются в очередь на финализацию, поэтому вам нужно только технически подавлять финализацию, если вы реализуете свой собственный финализатор.
Если вы реализуете IDisposable
для переноса неуправляемых ресурсов, вы должны включить финализатор, и вы должны запретить его запуск, поскольку теоретически вы выполняете очистку уже при вызове Dispose
.