Aviso do compilador (nível 2) CS0728
Atribuição possivelmente incorreta a 'variable' local que é o argumento para uma instrução using ou lock. A chamada Dispose ou o desbloqueio ocorrerá no valor original do local.
Há vários cenários em que o bloco using
ou lock
resultará em vazamento temporário de recursos. Aqui está um exemplo:
thisType f = null;
using (f)
{
f = new thisType();
...
}
Nesse caso, o valor original, como nulo, por exemplo, da variável thisType
será descartado quando o bloco using
terminar de ser executado, mas o objeto thisType
criado no bloco não será, embora, eventualmente, receba o lixo coletado.
Para resolver esse erro, use o formulário a seguir:
using (thisType f = new thisType())
{
...
}
Nesse caso, o objeto recém-alocado thisType
será descartado.
O código a seguir 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() { }
}
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários: