Если рассматриваемый класс предоставлен Microsoft (то есть .. база данных и т. Д.), То обработка Dispose (из IDisposable), скорее всего, уже будет решена, это только вы можете вызвать. Например, стандартная практика использования базы данных будет выглядеть так:
//...
using (IDataReader dataRead = new DataReaderObject())
{
//Call database
}
По сути, это то же самое, что и запись:
IDataReader dataRead = null;
try
{
dataRead = new DataReaderObject()
//Call database
}
finally
{
if(dataRead != null)
{
dataRead.Dispose();
}
}
Из того, что я понимаю, обычно рекомендуется использовать первое для объектов, которые наследуются от IDisposable, поскольку это обеспечит надлежащее освобождение ресурсов.
Что касается использования IDisposable самостоятельно, реализация зависит от вас. После того, как вы унаследуете его, вы должны убедиться, что метод содержит код, необходимый для удаления любых соединений с БД, которые вы могли создать вручную, освобождая ресурсы, которые могут остаться, или предотвратите уничтожение объекта, или просто очистив большие пулы ресурсов (например, изображения ). Это также включает неуправляемые ресурсы, например, код, помеченный внутри «небезопасного» блока, по сути является неуправляемым кодом, который может обеспечивать прямое манипулирование памятью, что, безусловно, требует очистки.