Freigeben über


Compilerwarnung (Stufe 2) CS0728

Möglicherweise falsche Zuweisung zur lokalen 'variable', die das Argument zu einer using- oder lock-Anweisung ist. Der Aufruf von 'Dispose' oder Entsperren treten beim ursprünglichen Wert der lokalen Variablen ein.

Es gibt eine Reihe von Szenarien, in denen using - oder lock -Blöcke zu einem zeitweiligen Ressourcenverlust führen. Es folgt ein Beispiel:

thisType f = null;

using (f)

{

f = new thisType();

...

}

In diesen Fall wird der ursprüngliche Wert der Variablen thisType , wie etwa null, verworfen, wenn die Ausführung des using -Blocks abgeschlossen ist, das thisType -Objekt, das innerhalb des Blocks erstellt wurde, jedoch nicht; allerdings fällt es möglicherweise der Garbage Collection zum Opfer.

Verwenden Sie die folgende Form, um diesen Fehler zu beheben:

using (thisType f = new thisType())

{

...

}

In diesem Fall wird das neu zugewiesene thisType -Objekt verworfen.

Beispiel

Im folgenden Code wird die Warnung CS0728 generiert.

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