Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Злобный Зайц
11 / 11 / 1
Регистрация: 21.10.2010
Сообщений: 424
1

Как уничтожить класс?

15.12.2017, 11:50. Просмотров 214. Ответов 10
Метки нет (Все метки)

Как сделать, чтобы созданный мною класс мог уничтожить самого себя? Что нужно сделать внутри класса, чтобы он перестал существовать?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2017, 11:50
Ответы с готовыми решениями:

Как уничтожить процесс?
Доброго времени суток, товарищи. Не совсем еще знаю всех азов, но пытаюсь...

как уничтожить нить в процессе?
допустим,известны индентификаторы процесса,в котором находятся определенные...

Арканоид. Как уничтожить объект при столкновении с другим объектом
Делаю игру арканоид кирпичи которые являются двухмерным массивом класса Box ...

Как уничтожить массив перед загрузкой в него новых данных
как уничтожить массив перед загрузкой новых данных в него (как будто программа...

Уничтожить нарисованную фигуру по нажатию клавиши
Хочу при нажатии одной клавиши нарисовать квадратик красным цветом и при...

10
Usaga
Эксперт .NET
5129 / 3489 / 615
Регистрация: 21.01.2016
Сообщений: 13,869
Завершенные тесты: 2
15.12.2017, 11:52 2
Злобный Зайц, этим занимается сборщик мусора. Вы такое сделать не можете.
0
OwenGlendower
Супер-модератор
Эксперт .NET
9682 / 8427 / 3611
Регистрация: 17.03.2014
Сообщений: 16,875
Записей в блоге: 1
15.12.2017, 12:09 3
Злобный Зайц, для этого нужно "выйти из Матрицы" и повторить то что делает сборщик мусора. Необходимо найти все ссылки на экземпляры своего класса и занулить их. Затем удалить их из памяти. Это интересная (и сложная) задача если есть время и желание изучить внутренности CLR. Практическая польза данного решения вызывает сомнения. Зачем тебе это понадобилось?
0
Злобный Зайц
11 / 11 / 1
Регистрация: 21.10.2010
Сообщений: 424
15.12.2017, 12:24  [ТС] 4
Класс подписан на все события формы. У меня создаются его экземпляры, допустим, по нажатию кнопки. Каждый создаёт на канве некоторое изображение. Я могу выделять мышью любой из них и таскать по экрану. Беда в том, что насоздавать-то я их могу хоть тыщщу, а вот удалить - никак. Хотелось, чтобы можно было убить экземпляр, выделив его и одновременно нажав "Delete". Как ещё можно убить все ссылки на него? И где, вообще, эти ссылки живут? Если бы я добавлял их в массив, можно быть бы там же и удалять. Но это придётся, опять же, делать извне?
0
Usaga
Эксперт .NET
5129 / 3489 / 615
Регистрация: 21.01.2016
Сообщений: 13,869
Завершенные тесты: 2
15.12.2017, 12:29 5
Злобный Зайц, выглядит как дико хреновая архитектура. Тут не в удалении класса проблема...

Добавлено через 1 минуту
А так, просто отписывайте класс от всех событий и за ним придёт сборщик мусора.
1
Злобный Зайц
11 / 11 / 1
Регистрация: 21.10.2010
Сообщений: 424
15.12.2017, 12:38  [ТС] 6
Согласен. Архитектор из меня хреновый. Не могли бы вы вкратце набросать > приличную архитектуру? Не уверен только, что сумею толково изложить задачу. Мне нужно, чтобы экземпляры класса добавлялись, отображались, реагировали бы на клаву и мышь и их бы можно быть не только плодить, но и уничтожать прицельно.

С отпиской щас поупражняюсь и доложу.
0
Usaga
Эксперт .NET
5129 / 3489 / 615
Регистрация: 21.01.2016
Сообщений: 13,869
Завершенные тесты: 2
15.12.2017, 12:40 7
Злобный Зайц, подписываться у вас должен ОДИН объект. Объект управляющий другими. А объекты-картинки должны пассивно лежать в коллекции в которой управляющий их будет искать по координатам. Удаление таких объектов - просто выписка их из коллекции.
1
Злобный Зайц
11 / 11 / 1
Регистрация: 21.10.2010
Сообщений: 424
15.12.2017, 12:57  [ТС] 8
Фокус с отпиской мне (видимо по неопытности) как-то > по душе. В коллекции оно у меня раньше накапливалось и там же удалялось. Но мне подумалось - зачем плодить сущности без необходимости, потом где-то следить за поведением экземпляра класса и удалять его, когда надо. Раз уж они могут плодиться без всякого внешнего накопителя, пусть бы сами и удалялись бы.

Щас сделал отписку при удалении. Отображаться перестаёт. А как бы убедиться, что экземпляра уже не существует?
0
Usaga
Эксперт .NET
5129 / 3489 / 615
Регистрация: 21.01.2016
Сообщений: 13,869
Завершенные тесты: 2
15.12.2017, 12:59 9
Цитата Сообщение от Злобный Зайц Посмотреть сообщение
А как бы убедиться, что экземпляра уже не существует?
Профилировщиком посмотреть.
0
Злобный Зайц
11 / 11 / 1
Регистрация: 21.10.2010
Сообщений: 424
15.12.2017, 13:01  [ТС] 10
Этого я пока не умею. И даже не знаю, что это такое.
0
Usaga
Эксперт .NET
5129 / 3489 / 615
Регистрация: 21.01.2016
Сообщений: 13,869
Завершенные тесты: 2
15.12.2017, 13:02 11
Злобный Зайц, погуглите. Тема нужная и полезная.
1
15.12.2017, 13:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2017, 13:02

Как правильно передавать параметры из класса А в класс С через класс B?
Всем привет! Пишу игру - Морской бой! Есть класс Game. Также есть класс...

Как переопределить класс integer в свой класс ('целочисленный')?
как переопредельть класс Int32 в свой класс ('целочисленный') я писал: class...

Уничтожить объект при возникновении в конструкторе обрабатываемого исключения
Наверняка ведь случается, что в конструкторе возникает исключение (неправильные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru