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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2011, 14:13   #1
Sbenya
Пользователь
 
Регистрация: 04.06.2010
Сообщений: 16
Вопрос ~диструктор() ;

Как я понял конструктор это механизм для инициализации переменных класса? как его еще можно использовать? А диструктор это противоположно для удаления инициализации что ли?????????или для чего?????
Sbenya вне форума Ответить с цитированием
Старый 10.11.2011, 14:40   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Как бы да, т.е. деструктор используют обычно для удаления объектов которые находятся в памяти (для очистки памяти). Но в .NET надо аккуратно пользоваться деструкторами, в идеале их вообще не надо использовать, т.к. есть GarbageCollector.
Hollander вне форума Ответить с цитированием
Старый 11.11.2011, 03:48   #3
Руслантус
Наркоман самоучка
Форумчанин
 
Аватар для Руслантус
 
Регистрация: 22.07.2007
Сообщений: 276
По умолчанию

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

Вот хорошая статья: http://habrahabr.ru/blogs/net/89720/
#include <мозг.h>
Руслантус вне форума Ответить с цитированием
Старый 11.11.2011, 08:10   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

обычно советовали делать класс c реализацией IDisposable.
ибо неизвестно когда будет вызван деструктор.

PS: меня лично это раздражает%)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.11.2011, 11:17   #5
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
PS: меня лично это раздражает%)
Не пользуйте C#, раз раздражает.
_-Re@l-_ вне форума Ответить с цитированием
Старый 12.11.2011, 11:22   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Не пользуйте C#, раз раздражает.
1)Указывать не просил.
2)Можно было сделать нормально.(как в COM)
А то по сути принцип тот же, но собирается мусор когда захочется сборщику(в итоге может и памяти не хватать и тп)
В dotNET еще не доводил до нехватки памяти, а в Java(там же тот же принцип) на телефоне часто выходила ситуация, что только что памяти не хватало, а после сообщения об ошибке сразу появилась...
3)Итак не пишу.
4)Тут не язык виноват, а платформа.
5)Вы считаете что ситуация когда деструктор неизвестно когда будет вызван(и вообще не особо то рекомендован) хороша?
Еще был иной вариант, что сборщик именно собирает память, а деструктор вызывается именно тогда когда объект больше не нужен.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 12.11.2011 в 11:29.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.11.2011, 12:56   #7
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
5)Вы считаете что ситуация когда деструктор неизвестно когда будет вызван(и вообще не особо то рекомендован) хороша?
Вот именно. Вообще не надо делать деструкторы. GC и так всё что надо сам соберёт. Да и как вы знаете, его(GC) можно вызвать в любой момент(но - да, не факт что он соберёт все вам ненужные объекты).
_-Re@l-_ вне форума Ответить с цитированием
Ответ


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