aviso do compilador (nível 2) CS0728

Mensagem de erro

Atribuição possivelmente incorreta a 'variável local' que é o argumento para uma demonstrativo usando ou bloquear.A telefonar Dispose ou desbloqueio será acontecerá no valor original do local.

Existem vários cenários em que using ou lock blocos resultará na perda de temporária de recursos. Aqui está um exemplo:

thisType f = null;

using (f)

{

f = new thisType();

...

}

Nesse caso, o valor original, sistema autônomo nulo, da variável thisType será descartado a partir de quando o using bloco termina em execução, mas o thisType objeto criado dentro do bloco não será, embora ele receberá eventualmente coletados pelo lixo.

Para resolver esse erro, use o seguinte formulário:

using (thisType f = new thisType())

{

...

}

Nesse caso, o recém-alocado thisType objeto será descartado a partir de.

Exemplo

O código a seguir irão gerar aviso 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() { }
}