Удалить объект через указатель - PullRequest
0 голосов
/ 14 марта 2012

У меня есть массив меток, указывающий на метку, например,

label_array[i] = a_label;

Массив имеет глобальное значение, а метка имеет область действия функции. Можно ли удалить метку через массив?

1 Ответ

1 голос
/ 14 марта 2012

Обычно вы можете избавиться от своих объектов, просто установив их ссылки на null, сборщик мусора позаботится об утилизации этих объектов для вас. Однако , не все объекты могут быть удалены, просто установив их ссылку на null.Фактически, все объекты, которые реализуют IDisposable, должны быть удалены путем вызова их метода Dispose, как в случае с объектами GDI, которые требуют явного вызова Dispose для освобождения своих ресурсов (см. Эту ссылку для деталей )

Говорят, что если a_label - это WinForms Label, то вы должны сделать следующее:

// REMOVE THE LABEL FROM THE PARENT CONTAINER FIRST 
// AND THEN DO THE FOLLOWING
label_array[i].Dispose();
label_array[i] = null;

EDIT Просто чтобы выделить то, что @Groo упомянул в комментарии ниже, убедитесь, что вы удалили Label из родительского контейнера перед его удалением, спасибо @Groo!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...