C# и .NET обеспечивают управление ресурсами для управляемых объектов через сборщик мусора. Вам не нужно явно выделять и освобождать память для управляемых объектов. Операции очистки для любых неуправляемых ресурсов должны выполняться в деструкторе C#.

Чтобы позволить программисту явно выполнять эти действия по очистке, объекты могут предоставлять метод Dispose, который можно вызывать, когда объект больше не нужен. Оператор C#using определяет границу объекта, за пределами которой объект автоматически уничтожается. Оператор using в C# завершается, когда заканчивается блок операторов using или когда выполнение выходит из блока операторов using косвенно, например, возникает исключение.

Оператор using позволяет указать несколько ресурсов в одном операторе. Объект также может быть создан вне оператора using. Объекты, указанные в блоке using, должны реализовывать интерфейс IDisposable. Платформа вызывает метод Dispose объектов, указанных в операторе using, при выходе из блока.

Класс MyManagedClass не является частью .NET Framework и используется в примере только для демонстрации. Класс MyManagedClass должен быть освобожден явно и реализует интерфейс IDisposable.

using (MyManagedClass mnObj = new MyManagedClass())
{
……
mnObj.Use(); //используется объект mnObj
……
} //компилятор уничтожит объект mnObj здесь
……

//Пример 2

……
MyManagedClass mnObj =new MyManagedClass()
using (mnObj)
{
……
mnObj.Use();//используется объект mnObj
……
}//объект mnObj будет уничтожен здесь
……


Обратите внимание, что директива using в C# отличается от оператора using. Директива «using» используется для предоставления псевдонима для пространства имен.


// псевдоним пространства имен
using System;
using System.IO;

class Program {
static void Main(string[] args)
{
// путь к файлу
string file = @»M:DocumentsTextfile.txt»;

// Запись в файл с помощью StreamWriter

string[] textLines2 = { «Myrusakov.ru»,
«Myrusakov.ru» };
// объект writer будет существовать в
// в пределах конструкции using

using(StreamWriter writer = new StreamWriter(file))
{
foreach(string ln in textLines2)
{
writer.WriteLine(ln);
}
}
// вывод на экран содержимого файла
Console.WriteLine(File.ReadAllText(file));

Console.ReadKey();
}
}


Таким образом, открывая файл в C# следует позаботиться об использовании ресурсов памяти, для чего и используется конструкция using.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.