Dispose

Освобождает все ресурсы, используемые объектом.

Метод Dispose должен вызываться по окончании использования объекта. После вызова метода Dispose необходимо удалить все ссылки на объект, чтобы сборщик мусора мог освободить память, занимаемую объектом.

Чтобы правильно вызвать метод Dispose, следует объявить и создать объект в операторе using. Оператор using соответствующим образом вызывает метод Dispose в объекте и приводит к выводу объекта из области действия сразу после вызова Dispose. Оператор using гарантирует вызов метода Dispose, даже если при вызове методов в объекте происходит исключение. Такого же результата можно достичь при размещении объекта в блоке try и последующем вызове метода Dispose в блоке finally (см. приложение 1).

Примечание

Метод необходимо всегда вызывать для освобождения последней ссылки на объект. В противном случае используемые им ресурсы не будут освобождены.

Синтаксис
public void Dispose();
Возвращаемое значение

Значение типа void.

Исключения

Отсутствуют.

Пример
// C#
using System;
using System.Data;
using System.Data.Common;

class DisposeSample
{
  static void Main()
  {
    // Создание объекта DbProviderFactory
    DbProviderFactory factory =
      DbProviderFactories.GetFactory("System.Data.LinterClient");
    // Создание объекта DbConnection
    using (DbConnection con = factory.CreateConnection())
    {
      con.ConnectionString =
        "User ID=SYSTEM;Password=MANAGER8;Data Source=LOCAL";
      con.Open();
      // Создание объекта DbCommand
      using (DbCommand cmd = factory.CreateCommand())
      {
        cmd.Connection = con;
        cmd.CommandText = "select * from some_table";
        // Создание объекта DbDataReader
        using (DbDataReader reader = cmd.ExecuteReader())
        {
          while (reader.Read())
          {
            for (int i = 0; i <  reader.FieldCount; i++)
            {
              Console.Write(reader.GetValue(i) + "\t");
            }
            Console.WriteLine();
          }
        } // Метод DbDataReader.Dispose() был вызван автоматически
      } // Метод DbCommand.Dispose() был вызван автоматически
    } // Метод DbConnection.Dispose() был вызван автоматически
  }
}