Написание собственного метода Dispose вместо использования Idisposable

Прочитав множество статей о 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 ? Жду конкретного объяснения.

8
задан CarenRose 15 November 2019 в 04:57
поделиться