Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Инструкция using гарантирует правильное использование экземпляра IDisposable :
var numbers = new List<int>();
using (StreamReader reader = File.OpenText("numbers.txt"))
{
string line;
while ((line = reader.ReadLine()) is not null)
{
if (int.TryParse(line, out int number))
{
numbers.Add(number);
}
}
}
Когда элемент управления покидает блок инструкции using , полученный IDisposable экземпляр удаляется. В частности, инструкция гарантирует, что удаленный экземпляр удаляется даже в том случае, using если исключение возникает в блоке using инструкции. В предыдущем примере открытый файл закрывается после обработки всех строк.
Используйте инструкцию await using для правильного использования экземпляра IAsyncDisposable :
await using (var resource = new AsyncDisposableExample())
{
// Use the resource
}
Дополнительные сведения об использовании экземпляров см. в IAsyncDisposable удаления" статьи "Реализация метода DisposeAsync".
Вы также можете использовать usingобъявление , которое не требует фигурных скобок:
static IEnumerable<int> LoadNumbers(string filePath)
{
using StreamReader reader = File.OpenText(filePath);
var numbers = new List<int>();
string line;
while ((line = reader.ReadLine()) is not null)
{
if (int.TryParse(line, out int number))
{
numbers.Add(number);
}
}
return numbers;
}
При объявлении локальная переменная удаляется в using конце области, в которой она объявлена. В предыдущем примере удаление происходит в конце метода.
Переменная, объявленная оператором или объявлением using , является чтением. Его нельзя переназначить или передать в качестве ref параметра out .
Можно объявить несколько экземпляров одного типа в одной using инструкции, как показано в следующем примере:
using (StreamReader numbersFile = File.OpenText("numbers.txt"), wordsFile = File.OpenText("words.txt"))
{
// Process both files
}
При объявлении нескольких экземпляров в одном using операторе они удаляются в обратном порядке объявления.
Вы также можете использовать инструкцию using и объявление с экземпляром структуры ссылок, которая соответствует шаблону удаления. То есть он имеет метод экземпляра Dispose , который доступен, без параметров и имеет тип возвращаемого void значения.
Оператор using также может иметь следующую форму:
using (expression)
{
// ...
}
где expression создается удаленный экземпляр. Это показано в следующем примере:
StreamReader reader = File.OpenText(filePath);
using (reader)
{
// Process file content
}
Предупреждение
В предыдущем примере после того, как элемент управления покидает инструкцию using , удаленный экземпляр остается в области, пока он уже удален. Если этот экземпляр используется дальше, может возникнуть исключение, например ObjectDisposedException. Поэтому рекомендуется объявлять удаленную переменную в using инструкции или с объявлением using .
Спецификация языка C#
Дополнительные сведения см. в разделе инструкции usingспецификации языка C#.