using deyimi - atılabilir nesnelerin doğru kullanıldığından emin olun

deyimi using bir IDisposable örneğin doğru kullanılmasını sağlar:

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);
        }
    }
}

Denetim deyiminin bloğundan ayrıldığında using , alınan IDisposable bir örnek atılır. Özellikle deyimi, deyiminin using bloğunda using bir özel durum oluşsa bile atılabilir bir örneğin atılmasını sağlar. Yukarıdaki örnekte, tüm satırlar işlendikten sonra açık bir dosya kapatılır.

Bir IAsyncDisposable örneği doğru kullanmak için deyimini await using kullanın:

await using (var resource = new AsyncDisposableExample())
{
    // Use the resource
}

Örneklerin IAsyncDisposable kullanımı hakkında daha fazla bilgi için DisposeAsync yöntemi uygulama makalesinin Zaman uyumsuz atılabilir kullanım kullanma bölümüne bakın.

Ayraç gerektirmeyen bir using bildirim de kullanabilirsiniz:

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;
}

Bir using bildirimde bildirildiğinde, yerel değişken bildirildiği kapsamın sonunda atılır. Yukarıdaki örnekte, elden çıkarma bir yöntemin sonunda gerçekleşir.

Deyimi veya bildirimi tarafından using bildirilen bir değişken salt okunur. Yeniden atayamaz veya veya ref out parametre olarak geçiremezsiniz.

Aşağıdaki örnekte gösterildiği gibi, bir using deyimde aynı türdeki birkaç örneği bildirebilirsiniz:

using (StreamReader numbersFile = File.OpenText("numbers.txt"), wordsFile = File.OpenText("words.txt"))
{
    // Process both files
}

Tek bir using deyimde birkaç örneği bildirdiğinizde, bunlar bildirimin ters sırasına göre atılır.

Deyimini ve bildirimini using , atılabilir desene uyan bir başvuru yapısı örneğiyle de kullanabilirsiniz. Yani, erişilebilir, parametresiz ve dönüş türüne sahip bir void örnek Dispose yöntemine sahiptir.

Deyimi using aşağıdaki biçimde de olabilir:

using (expression)
{
    // ...
}

burada expression tek kullanımlık bir örnek üretir. Aşağıdaki örnekte şunlar gösterilmiştir:

StreamReader reader = File.OpenText(filePath);

using (reader)
{
    // Process file content
}

Uyarı

Yukarıdaki örnekte, denetim deyiminden using ayrıldıktan sonra atılabilir bir örnek zaten atılmış durumdayken kapsam içinde kalır. Bu örneği daha fazla kullanırsanız, örneğin, bir özel durumla karşılaşabilirsiniz. ObjectDisposedException Bu nedenle deyimi içinde using veya bildirimiyle using atılabilir bir değişken bildirmenizi öneririz.

C# dili belirtimi

Daha fazla bilgi için C# dil belirtiminin using deyimi bölümüne bakın ve "desen tabanlı kullanma" ve "using bildirimleri" hakkındaki teklif notu.

Ayrıca bkz.