где
В приведенном ниже примере демонстрируются обе формы оператора using.
// Продемонстрировать применение оператора using.
using System; using System.10;
class UsingDemo {
static void Main { try {
StreamReader sr = new StreamReader("test.txt") ;
// Использовать объект в операторе using, using(sr) {
// ...
}
} catch(IOException exc) {
// ...
}
try {
// Создать объект класса StreamReader в операторе using, using(StreamReader sr2 = new StreamReader("test.txt")) {
// ...
}
} catch(IOException exc) {
// ...
В данном примере интерфейсI Disposableреализуется в классеStreamReader(посредством его базового классаTextReader).Поэтому он может использоваться в оператореusing.По завершении этого оператора автоматически вызывается методDispose для переменной потока, закрывая тем самым поток.
Как следует из приведенного выше примера, операторusingособенно полезен для работы с файлами, поскольку файл автоматически закрывается по завершении блока этого оператора, даже если он и завершается исключением. Таким образом, закрытие файла с помощью оператораusingзачастую упрощает код обработки файлов. Разумеется, применение оператораusingне ограничивается только работой с файлами. В среде .NET Framework имеется немало других ресурсов, реализующих интерфейсI Disposable.И всеми этими ресурсами можно управлять с помощью оператораusing.
Ключевое слово extern
Ключевое словоexternнаходит два основных применения. Каждое из них рассматривается далее по порядку.
Объявление внешних методов
В первом своем применении ключевое словоexternбыло доступно с момента создания С#. Оно обозначает, что метод предоставляется в неуправляемом коде, который не является составной частью программы. Иными словами, метод предоставляется внешним кодом.