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 using ayrıldığında, alınan IDisposable ö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
}

Örnekleri kullanma IAsyncDisposable 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.

C# dili başvuru belgesi, C# dilinin en son yayımlanan sürümünü gösterir. Ayrıca, yaklaşan dil sürümü için genel önizlemelerdeki özelliklere yönelik ilk belgeleri içerir.

Belgelerde ilk olarak dilin son üç sürümünde veya geçerli genel önizlemelerde sunulan tüm özellikler tanımlanır.

Tavsiye

Bir özelliğin C# dilinde ilk tanıtıldığı zamanları bulmak için C# dil sürümü geçmişi makalesine bakın.

Deyimi veya bildirimi tarafından using bildirilen bir değişken salt okunur. Yeniden atayamaz veya veya out parametre olarak ref 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.

Blok return içindeki bir using blok hala imhayı garanti eder. Derleyici bunu bir try/finallyiçine yeniden yazar, bu nedenle yöntemin gerçekten döndürmesi için 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 bu form gösterilmektedir:

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 bildirmeniz gerekir.

C# dili belirtimi

Daha fazla bilgi için C# dil belirtimininusing deyimi bölümüne bakın.

Ayrıca bkz.