Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Příkaz using zajišťuje správné použití IDisposable instance:
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);
}
}
}
Když ovládací prvek opustí blok using příkazu, zlikviduje se získaná IDisposable instance. Konkrétně příkaz using zajistí, že se uvolnitelná instance odstraní i v případě, že dojde k výjimce v rámci bloku using příkazu. V předchozím příkladu se otevřený soubor zavře po zpracování všech řádků.
Použijte příkaz await using k správnému IAsyncDisposable použití instance:
await using (var resource = new AsyncDisposableExample())
{
// Use the resource
}
Další informace o používání instancí naleznete IAsyncDisposablepoužití v článku Implementace metody DisposeAsync.
Můžete také použít usingdeklaraci , která nevyžaduje složené závorky:
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;
}
Při deklaraci je using místní proměnná uvolněna na konci oboru, ve kterém je deklarována. V předchozím příkladu dochází k odstranění na konci metody.
Proměnná deklarovaná příkazem using nebo deklarací je jen pro čtení. Nemůžete ho znovu přiřadit ani předat jako ref parametr.out
V jednom using příkazu můžete deklarovat několik instancí stejného typu, jak ukazuje následující příklad:
using (StreamReader numbersFile = File.OpenText("numbers.txt"), wordsFile = File.OpenText("words.txt"))
{
// Process both files
}
Když v jednom using příkazu deklarujete několik instancí, budou uvolněny v obráceném pořadí deklarace.
Můžete také použít using příkaz a deklaraci s instancí ref struktury , která odpovídá vzoru na jedno použití. To znamená, že má metodu instance Dispose , která je přístupná, bez parametrů a má návratový void typ.
using Vnitřní return blok stále zaručuje odstranění, kompilátor ho přepíše do , try/finallytakže prostředek Dispose je vždy volána před tím, než metoda skutečně vrátí.
Příkaz using může být také z následujícího formuláře:
using (expression)
{
// ...
}
v případě, že expression vytváří jednorázovou instanci. Následující příklad ukazuje, že:
StreamReader reader = File.OpenText(filePath);
using (reader)
{
// Process file content
}
Upozorňující
V předchozím příkladu poté, co ovládací prvek opustí using příkaz, zůstane uvolnitelná instance v oboru, zatímco je již uvolněna. Pokud tuto instanci použijete dále, může dojít například ObjectDisposedExceptionk výjimce . Proto doporučujeme deklarovat jednorázovou proměnnou v rámci using příkazu nebo deklarace using .
specifikace jazyka C#
Další informace naleznete v části Příkaz usingspecifikace jazyka C#.