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() был вызван автоматически } }