Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
 Аватар для Злобный Зайц
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462

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

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

Студворк — интернет-сервис помощи студентам
Как сделать, чтобы созданный мною класс мог уничтожить самого себя? Что нужно сделать внутри класса, чтобы он перестал существовать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.12.2017, 11:50
Ответы с готовыми решениями:

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

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

[SL] ContextMenu. Как уничтожить?
После вызова меню память увеличивается Как удалить контекстное меню? <Grid x:Name="LayoutRoot"...

10
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,435
15.12.2017, 11:52
Злобный Зайц, этим занимается сборщик мусора. Вы такое сделать не можете.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18303 / 14227 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
15.12.2017, 12:09
Злобный Зайц, для этого нужно "выйти из Матрицы" и повторить то что делает сборщик мусора. Необходимо найти все ссылки на экземпляры своего класса и занулить их. Затем удалить их из памяти. Это интересная (и сложная) задача если есть время и желание изучить внутренности CLR. Практическая польза данного решения вызывает сомнения. Зачем тебе это понадобилось?
0
 Аватар для Злобный Зайц
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462
15.12.2017, 12:24  [ТС]
Класс подписан на все события формы. У меня создаются его экземпляры, допустим, по нажатию кнопки. Каждый создаёт на канве некоторое изображение. Я могу выделять мышью любой из них и таскать по экрану. Беда в том, что насоздавать-то я их могу хоть тыщщу, а вот удалить - никак. Хотелось, чтобы можно было убить экземпляр, выделив его и одновременно нажав "Delete". Как ещё можно убить все ссылки на него? И где, вообще, эти ссылки живут? Если бы я добавлял их в массив, можно быть бы там же и удалять. Но это придётся, опять же, делать извне?
0
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,435
15.12.2017, 12:29
Злобный Зайц, выглядит как дико хреновая архитектура. Тут не в удалении класса проблема...

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

С отпиской щас поупражняюсь и доложу.
0
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,435
15.12.2017, 12:40
Злобный Зайц, подписываться у вас должен ОДИН объект. Объект управляющий другими. А объекты-картинки должны пассивно лежать в коллекции в которой управляющий их будет искать по координатам. Удаление таких объектов - просто выписка их из коллекции.
1
 Аватар для Злобный Зайц
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462
15.12.2017, 12:57  [ТС]
Фокус с отпиской мне (видимо по неопытности) как-то > по душе. В коллекции оно у меня раньше накапливалось и там же удалялось. Но мне подумалось - зачем плодить сущности без необходимости, потом где-то следить за поведением экземпляра класса и удалять его, когда надо. Раз уж они могут плодиться без всякого внешнего накопителя, пусть бы сами и удалялись бы.

Щас сделал отписку при удалении. Отображаться перестаёт. А как бы убедиться, что экземпляра уже не существует?
0
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,435
15.12.2017, 12:59
Цитата Сообщение от Злобный Зайц Посмотреть сообщение
А как бы убедиться, что экземпляра уже не существует?
Профилировщиком посмотреть.
0
 Аватар для Злобный Зайц
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462
15.12.2017, 13:01  [ТС]
Этого я пока не умею. И даже не знаю, что это такое.
0
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,435
15.12.2017, 13:02
Злобный Зайц, погуглите. Тема нужная и полезная.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2017, 13:02
Помогаю со студенческими работами здесь

Как правильно уничтожить элемент формы
Если у меня в форме есть элемент, ну скажем Button, я его создал программно (задал размер, имя, текст, координаты и т.д), перед тем как...

Как уничтожить экземпляр класса (объект)?
Я столкнул с такой проблемой. Я не могу понять как удалять объекты класса(экземляры). Читая интернет я вижу что "мусорщик" должен...

Как уничтожить форму?
В программе создаю форму для редактирования справочника цехов. FShop:=TFShop.Create(FMain);В самой форме по закрытию: Action :=...

Как уничтожить переменную?
как уничтожить переменную?помогите. и перейдите сюда(буду благодарен):cut

Как уничтожить форму?
У меня тестирующая программа и во время прохождения теста в меню можно выбрать "Перезапустить тест". То есть форму с тестом нужно...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru