В языке C # есть вещи, называемые "деструкторы", семантика которых не имеет никакого отношения к деструкторам в C ++.Несмотря на то, что имя является неудачным, «деструктор» является стандартным термином для синтаксического элемента C #, который начинается с тильды и имени класса и который запрашивает компилятор сгенерировать переопределение Finalize (), которое вызывает предоставленный код, а затемвызывает base.Finalize ().Довольно глупая и бессмысленная языковая конструкция (просто позволяющая коду переопределять Finalize () была бы менее запутанной; привязка имени Finalize () к языку была бы незначительной проблемой по сравнению с привязкой в GC.KeepAlive () и GC.SuppressFinalize(), которые обычно требуются в правильно написанной программе, использующей деструкторы).
Кстати, имя «деструктор» иронично, поскольку деструкторы на самом деле не уничтожают объекты, а предоставляют объекты, который в противном случае был бы уничтожен с отсрочкой в последнюю секунду, чтобы привести свои дела в порядок.