Если у класса есть метод Dispose, лучше всего вызывать его. причина
за этим стоит то, что Dispose запускается при вызове, тогда как установка объекта
null просто добавляет запись в очередь Finalize в GC, и мы не можем
определить, когда GC будет работать.
Нет преимущества в производительности при реализации метода Dispose для типов, которые используют только управляемые ресурсы (например, массивы), поскольку они автоматически возвращаются сборщиком мусора. Используйте метод Dispose в первую очередь для управляемых объектов, которые используют собственные ресурсы, и для объектов COM, которые доступны для .NET Framework. Управляемые объекты, использующие собственные ресурсы (например, класс FileStream), реализуют интерфейс IDisposable.
Изящное средство ввода в действие Dispose использует конструкцию «using». Для тех из вас, кто может быть не знаком с этой конструкцией, она предоставляет средство для простоты вызова Dispose () для экземпляра, который реализует IDisposable, даже если во время операции создается исключение. Ниже приведен пример использования конструкции:
using(DisposableClass dc = new DisposableClass())
{
dc.PerformActionOnUmanagedResources();
dc.PerformAnotherActionOnUmanagedResources();
}
В предыдущем примере, если исключение было сгенерировано в методе PerformActionOnUmanagedResources (), хотя метод PerformAnotherActionOnUmanagedResources () не будет обработан, блок using будет по-прежнему неявно вызывать метод Dispose для dc, обеспечивая освобождение любых неуправляемых ресурсов .