İngilizce dilinde oku

Aracılığıyla paylaş


Derleyici Uyarısı (düzey 2) CS0728

Bir using veya lock deyiminin bağımsız değişkeni olan yerel 'değişkene' yanlış atama olabilir. Dispose çağrısı veya kilidi açma yerel özgün değerinde gerçekleşir.

veya lock bloklarının geçici olarak kaynak sızıntısına neden olacağı çeşitli senaryolar using vardır. Aşağıda bir örnek verilmiştir:

thisType f = null;

using (f)

{

f = new thisType();

...

}

Bu durumda, bloğun yürütülmesi tamamlandığında değişkenin thisType null gibi özgün değeri atılır using , ancak bloğun thisType içinde oluşturulan nesne olmaz, ancak sonunda çöp toplanır.

Bu hatayı düzeltmek için aşağıdaki formu kullanın:

using (thisType f = new thisType())

{

...

}

Bu durumda, yeni ayrılan thisType nesne atılır.

Örnek

Aşağıdaki kod cs0728 uyarısını oluşturur.

// CS0728.cs  
  
using System;  
public class ValidBase : IDisposable  
{  
    public void Dispose() {  }  
}  
  
public class Logger  
{  
    public static void dummy()  
    {  
        ValidBase vb = null;  
        using (vb)
        {  
            vb = null;  // CS0728  
        }  
        vb = null;  
    }  
    public static void Main() { }  
}