Оператор using в C#

Оператор using в C#

Оператор using в C#

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.

Источник

НЕТ КОММЕНТАРИЕВ

Оставить комментарий