Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Ostrzeżenie kompilatora (poziom 2) CS0728

Prawdopodobnie nieprawidłowe przypisanie do lokalnej zmiennej , która jest argumentem instrukcji using lub lock. Wywołanie dispose lub odblokowanie nastąpi na oryginalnej wartości lokalnego.

Istnieje kilka scenariuszy, w których using lub lock bloki spowodują tymczasowy wyciek zasobów. Oto jeden przykład:

thisType f = null;

using (f)

{

f = new thisType();

...

}

W takim przypadku oryginalna wartość, taka jak null, zmiennej thisType zostanie usunięta po using zakończeniu wykonywania bloku, ale thisType obiekt utworzony wewnątrz bloku nie będzie, chociaż w końcu zostanie odzyskany element bezużyteczny.

Aby rozwiązać ten błąd, użyj następującego formularza:

using (thisType f = new thisType())

{

...

}

W takim przypadku nowo przydzielony thisType obiekt zostanie usunięty.

Przykład

Poniższy kod spowoduje wygenerowanie ostrzeżenia CS0728.

// 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() { }  
}