Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2008, 00:08   #1
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию Как уничтожить объект в C#

Необходимо уничтожить объект, но не знаю как это делается...

в делфи например делаю так label1.Free(); а как на C#??
Никки вне форума Ответить с цитированием
Старый 31.10.2008, 03:09   #2
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

метод Dispose()
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Старый 31.10.2008, 13:39   #3
OrdJONY
.NET-чик
Форумчанин
 
Аватар для OrdJONY
 
Регистрация: 24.03.2007
Сообщений: 569
По умолчанию

Вообще-то .NET CLR чистит за вас память. GC - сборщик мусора пристально следить за всеми объектами и если на какой-то объект нет ссылок, объект удаляется из памяти
"Разработка под веб - как работа с пылесосом: нихрена не прикольно, но засасывает"
Мо маленький городок
OrdJONY вне форума Ответить с цитированием
Старый 01.11.2008, 00:05   #4
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

У меня дело обстоит немного по другому.

У меня есть свой класс, в нем нет у меня инструктора, в нем есть только конструктор, несколько переменных и объект класса PictureBox (вот его то и надо в первую очередь уничтожить чтобы создать новый...). Так же у меня есть массив объектов этого класса. В процессе работы программы есть необходимость уничтожить все объекты в массиве и создать их заново...
Никки вне форума Ответить с цитированием
Старый 03.11.2008, 07:58   #5
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

смею немного вас поправить...... не инструктор а деструктор..... а теперь по делу.... если вам надо уничтожить объект, а на его месте создать другой, то вы можете просто присвоить его переменной указателю новый объект...... прошлый объект останется без указателя и автоматически уничтожится "сборщиком мусора".......

Пример:

Код:
PictureBox pict1;
pict1=new PictureBox();
//всякие манипуляции
pict1=new PictureBox(); //прошлый объект удаляется, а на его месте новый
//ещё всякий код
все объекты, которые остаются без указателя на него удаляются автоматически, поэтому, штобы удалить объект достаточно присвоить переменной null
pict1=null; //также удалит объект
Надо бы избавиться от привычки ставить многоточие.....

Последний раз редактировалось Min; 03.11.2008 в 08:00.
Min вне форума Ответить с цитированием
Старый 30.10.2014, 23:24   #6
parser
Новичок
Джуниор
 
Регистрация: 30.10.2014
Сообщений: 1
По умолчанию

Возникла та же проблема, пытаюсь решить так:
Код:
Regex regex = new Regex(@"........");
Match match = regex.Match(str);
Regex regex = new Regex(@"..........");
или так:
Код:
Regex regex = new Regex(@"........");
Match match = regex.Match(str);
regex = null;
Regex regex = new Regex(@"..........");
и в обеих ситуациях ошибка "В этой области видимости уже определена локальная переменная с именем "regex"

т.е. переменная не обнуляется
parser вне форума Ответить с цитированием
Старый 30.10.2014, 23:49   #7
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

parser, нельзя объявить переменную дважды в одной и той же области видимости (как сделано в Вашем коде), но ей можно просто напросто присвоить другое значение.
Код:
Regex regex = new Regex(@"........");
Match match = regex.Match(str);
regex = null;
regex = new Regex(@"..........");
Проблема здесь в синтаксисе, а вовсе не в уничтожении объекта и поэтому к данной теме она не имеет отношения.
P.S. А, вообще нечего себе некропост. Особенно, если посмотреть на даты предыдущих постов.
Streletz вне форума Ответить с цитированием
Старый 30.10.2014, 23:54   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

И чего? Не надо ее объявлять заново, просто regex = something;
Не путайте память занятую объектом и ссылку на него, эта тема о первом. (и то автор себе какие-то странные проблемы придумал не услышав о GC. Впрочем у PictureBox, как и у всех контролов, есть Dispose, который можно и вызвать, видимо реализовав IDisposable в классе автора, создающем PictureBox, но и без этого он вроде должен вызваться через финализатор при работе GC)

и
Код:
regex = null;
regex = new ...;
совершенно бессмысленно. Можно пропустить первое действие.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 31.10.2014 в 00:05.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как убрать/уничтожить с формы компонент TImage? ZhekON Общие вопросы Delphi 11 11.03.2008 17:28
Как передать объект по наследству Legat Win Api 6 03.11.2007 11:19
как внедрить 'объект' в программу? steck Общие вопросы Delphi 1 07.04.2007 17:20