Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базовые технологии платформы .NET.pdf
Скачиваний:
65
Добавлен:
11.05.2015
Размер:
1.81 Mб
Скачать

IDisposable с единственным методом Dispose(). Если класс или структура реализуют этот интерфейс, Dispose() содержит код освобождения управляемых ресурсов.

public class ClassWithDispose : IDisposable

{

public void DoSomething()

{

Console.WriteLine("I am working...");

}

public void Dispose()

{

// здесь должен быть код освобождения управляемых ресурсов

Console.WriteLine("Bye!");

}

}

Язык C# имеет специальный оператор using, который гарантирует вызов метода Dispose() для заданных переменных в конце блока кода. Синтаксис оператора using следующий:

using (получение-ресурса) вложенный-оператор

Здесь получение-ресурса означает один из вариантов.

1.Объявление и инициализацию локальной переменой (или списка переменных). Тип переменной должен реализовывать IDisposable. Такая переменная

вблоке using доступна только для чтения.

2.Выражение, значение которого имеет тип, реализующий IDisposable. Приведём пример использования оператора using:

using (ClassWithDispose x = new ClassWithDispose())

{

x.DoSomething();

// компилятор C# поместит сюда вызов x.Dispose()

}

7.3. Слабые ссылки

Слабая ссылка (weak reference) – особый вид ссылки на объект в системах со сборкой мусора. Если на объект имеются только слабые ссылки, он рассматривается алгоритмом сборки мусора как подлежащий удалению.

В .NET слабые ссылки представлены классами System.WeakReference и System.WeakReference<T>. Конструктор класса принимает объект, на который создаётся слабая ссылка. Свойство Target указывает на этот объект или имеет значение null, если объект был удалён сборщиком мусора.

var weak = new WeakReference(new StringBuilder("Test"));

25