Leggere in inglese

Condividi tramite


Avviso del compilatore (livello 2) CS0728

Probabile assegnazione non corretta a 'variable' locale, che rappresenta l'argomento di un'istruzione using o lock. La chiamata Dispose o lo sblocco avverrà sul valore originale dell'argomento locale.

Esistono diversi scenari in cui i blocchi using o lock generano una perdita temporanea di risorse. Di seguito è riportato un esempio:

thisType f = null;

using (f)

{

f = new thisType();

...

}

In questo esempio, al termine dell'esecuzione del blocco thisType il valore originale, ovvero null, della variabile using verrà eliminato ma non l'oggetto thisType creato all'interno del blocco, che alla fine verrà sottoposto alla procedura di Garbage Collection.

Per risolvere l'errore, usare il seguente formato:

using (thisType f = new thisType())

{

...

}

In questo caso, il nuovo oggetto thisType allocato verrà eliminato.

Esempio

Il codice seguente genera l'errore CS0728.

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