Как очистить неуправляемые ресурсы в 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удалении. Но похоже, что вы спрашивали не об этом.