В каких случаях надо писать что то в теле деструктора?
В каких случаях надо писать что то в теле деструктора ? Когда нам самим руками на особождать ресурсы? Уже пишу год на c# не когда не писал что в деструкторе.
class Person
{
public:
Person(string n)
{
name = n;
}
~Person()
{
Debug.Log( "Destructor called for Person " + name );
}
private:
string name;
};
Ответы (1 шт):
Большинство объектов, используемых в программах на C#, относятся к управляемым или managed-коду, и легко очищаются сборщиком мусора. Однако вместе с тем встречаются также и такие объекты, которые задействуют неуправляемые объекты (низкоуровневые файловые дескрипторы, сетевые подключения и т.д.). Такие неуправляемые объекты обращаются к API операционной системы через службы PInvoke. Сборщик мусора может справиться с управляемыми объектами, однако он не знает, как удалять неуправляемые объекты. В этом случае разработчик должен сам реализовывать механизмы очистки на уровне программного кода.
Освобождение неуправляемых ресурсов подразумевает реализацию одного из двух механизмов:
- Создание деструктора
- Реализация классом интерфейса System.IDisposable