C# Деструктор

Всем привет . Что время уже много сидим дома .! и чтобы время тратить продуктивно начинал изучать C# всё нормально изучал (Классы, Методы, Констриктору, Логическое операции, Массивы, Циклы, Работа_с_переменными, ) читаю книгу и параллельно в google смотрю примеров чтобы нечего не пропустит.
Вопрос про деструкторе: Я читаю https://www.bestprog.net/ru/2018/10/09/destructor-garbage-collection_ru/ что

Во время работы программы, когда создаются объекты класса, происходит выделение оперативной памяти оператором new. После того, как объект выполнил свою работу, он (возможно) уже не используется в программе (но память все еще занимает). Если в программе создано много объектов классов, то может возникнуть ситуация когда выделенной памяти не хватит для создания следующего объекта.
В этом случае, важно освободить память что была выделена под объекты, которые уже не используются. Для этого система динамического распределения памяти C# использует так называемую «сборку мусора». Если происходит «сборка мусора» то освобождается память для объектов, которые не используются.

Но меня говорят что его нету


На пример это класс файл Test

using System;

namespace ConsoleApp1
{
    class Test
    {
        // публичной Функция  Mystring()
        public void Mystring()
        {
            Console.WriteLine("Privet ;) ");
            Console.ReadKey();
        }

        // Cоздать деструктора для класса Complex
        // Имя деструктора всегда такое же как и название класса
        ~Test()
        {
            Console.WriteLine("Экземпляр класса Test уничтожен");

        }
    }
}

Это файл программы

using System;



namespace ConsoleApp1
{
    class Program
    {   
        static void Main(string[] args)
        {    // создадите экземпляр класса
             Test  ts = new Test();
            // вызвать объект Mystring() из класса Test.cs
            ts.Mystring();
            
        }
    }
}

и при создание программы будет несколько класс и как понят это НЕТ и что это ?

        ~Test()
        {
            Console.WriteLine("Экземпляр класса Test уничтожен");

        }

сборщик мусора вызывает не деструктор, а метод Finalize класса. Все потому, что компилятор C# компилирует деструктор в конструкцию, которая эквивалентна следующей

protected override void Finalize()
{
    try
    {
        // здесь идут инструкции деструктора
    }
    finally
    {
        base.Finalize();
    }
}

Метод Finalize уже определен в базовом для всех типов классе Object, однако данный метод нельзя так просто переопределить. И фактическая его реализация происходит через создание деструктора.
Лишь при завершении всей программы гарантировано произойдет очистка памяти и вызов деструктора.

1 лайк

https://metanit.com/sharp/tutorial/8.2.php

1 лайк

Огромное спасибо. почитаю.