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