Как очистить неуправляемые ресурсы в C # [дубликат]
У меня есть этот класс:
public class A
{
//Some logic code here
}
Мой вопрос в том, как я могу удалить или уничтожить любой объект, созданный на основе этого класса, после выхода из области видимости?
Например:
A a = new A();
//some code here
после того, как //some code here
я хочу, чтобы a
объект был уничтожен или удален и освободил выделенную ему память.
Ответы
Я проигнорирую заголовок и сконцентрируюсь на основной части вопроса, поскольку из вопроса кажется очевидным, в чем проблема.
Короткий ответ: нет. Сборщик мусора автоматически позаботится об этом, когда сочтет это необходимым. (Вам не нужно запускать сборщик мусора. Это происходит автоматически.)
Затем сборщик мусора ищет объекты, которые вышли из области видимости, как a
в вашем примере, и освобождает использованное пространство. Затем он увидит, что внутренние компоненты a
также, очевидно, вышли из области видимости (если они не упоминаются в другом месте вашего кода), и обработает их.
Сказав это, когда вы используете переменные классов, которые реализуют Dispose
, лучше всего вызывать Dispose
явно или использовать using
блоки для этого. Вы также можете реализовать финализатор, который будет выполняться при a
удалении. Но похоже, что вы спрашивали не об этом.