Aracılığıyla paylaş


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 await using örneği doğru kullanmak için deyimini IAsyncDisposable 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 usingbildirim 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 refout 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 Dispose örnek void yöntemine sahiptir.

Bir return bloğun içindeki bir using yine de elden çıkarma garantisi verir, derleyici bunu içine try/finallyyeniden yazar, bu nedenle yöntemin gerçekten döndürülmeden önce kaynağın Dispose her zaman çağrılır.

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 belirtimininusing deyimi bölümüne bakın.

Ayrıca bkz.