Прочитав множество статей о IDisposable
, я получил смущен его использованием. Во всех статьях объясняется, что это такое и как его реализовать, но я хочу понять, что мы упустим, если его не будет.
Вот пример класса, реализующего IDisposable
. Часто использование dispose показано как удаление соединения с базой данных .
public class Test : IDisposable
{
public Test()
{
DatabaseConnection databaseConnection = new DatabaseConnection();
}
public void Dispose()
{
if (this.databaseConnection != null)
{
this.databaseConnection.Dispose();
this.databaseConnection = null;
}
}
}
Хотя Dispose ()
реализован, внутри метода Dispose ()
свойство dispose databaseConnection
используется для освобождения соединения ( this.databaseConnection.Dispose ();
).
Мой вопрос , зачем нам реализовывать IDisposable
в этом случае? Мы можем напрямую вызвать this.databaseConnection.Dispose ()
и освободить соединение. Зачем реализовывать IDisposable
, когда внутри он также вызывает метод Dispose ()
объекта?
Альтернативу подходу IDisposable
, мы можем реализовать метод Release ()
для освобождения памяти.
public class Test
{
public Test()
{
DatabaseConnection databaseConnection = new DatabaseConnection();
}
public void Release()
{
if (this.databaseConnection != null)
{
this.databaseConnection.Dispose();
this.databaseConnection = null;
}
}
}
В чем разница между этими двумя подходами? Нам действительно нужен IDisposable
? Жду конкретного объяснения.