Advertencia del compilador (nivel 2) CS0728
Posiblemente una asignación incorrecta a 'variable' local, que es el argumento a una instrucción using o lock. La llamada a Dispose o el desbloqueo se producirá en el valor original de la variable local.
Hay varios escenarios donde using
o lock
bloques darán como resultado una pérdida temporal de recursos. Este es un ejemplo:
thisType f = null;
using (f)
{
f = new thisType();
...
}
En este caso, el valor original, como null, de la variable thisType
se desechará cuando el bloque using
termine la ejecución, pero el objeto thisType
creado dentro del bloque no estará, aunque eventualmente tendrá los desechos recopilados.
Para resolver este error, use el formato siguiente:
using (thisType f = new thisType())
{
...
}
En este caso, el objeto thisType
recién asignado se eliminará.
El código siguiente generará la advertencia 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() { }
}
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios: