Нет, .Net и hense C# полагаются на управление памятью сбора мусора. Поэтому деструкторы (которые в .Net называются финализаторами) не вызываются до тех пор, пока GC не найдет нужным уничтожить объекты.
Дополнительно: большинство «обычных» объектов в C# не имеют деструкторов. Если вам нужен шаблон деструктора, вы должны реализовать IDisposable interface с Dispose Pattern. На одноразовых объектах вы также должны убедиться, что метод Dispose вызывается, либо с помощью using keyword, либо напрямую вызывает метод.
Для дальнейшего (надеюсь) уточнения: детерминированное удаление полезно в .Net, например. когда вам нужно явно освобождать ресурсы, которые не управляются средой .Net. Примерами таких ресурсов являются файловые дескрипторы, соединения с базами данных и т. Д. Обычно важно, чтобы эти ресурсы были освобождены, как только они больше не нужны. Таким образом, мы не можем дождаться, когда GC их освободит.
Для того чтобы получить детерминированное удаление (аналогично поведению C++) в недетерминированном мире .Net GC, классы .Net полагаются на интерфейс IDisposable. Заимствование из Dispose Pattern, вот несколько примеров:
Во-первых, инстанцировании располагаемый ресурс и затем позволяя объект выходить из области видимости, оставит его до GC для ликвидации объекта:
1. {
2. var dr = new DisposableResource();
3. }
Для исправить это мы можем прямо распоряжаться объектом:
1. {
2. var dr = new DisposableResource();
3.
4. ...
5.
6. dr.Dispose();
7. }
Но что, если что-то пойдет не так между строкой 2 и 6? Dispose не будет вызываться. В целях дальнейшего обеспечения того, чтобы Dispose, наконец, будет вызван независимо от каких-либо исключений, мы можем сделать следующее:
1. var dr = new DisposableResource();
2. try
3. {
4. ...
5. }
6. finally
7. {
8. dr.Dispose();
9. }
Поскольку эта модель часто требуется, C# включает в себя, используя ключевое слово, чтобы упростить вещи. Следующий пример эквивалентен вышесказанному:
1. using (var dr = new DisposableResource())
2. {
3. ...
4. }
@RA - извините за задержку, имели некоторые Занятия IRL делать :) Добавлены некоторые примеры сейчас, надеюсь, что это еще раз пояснит. –