Avertissement du compilateur (niveau 2) CS0728
Assignation potentiellement incorrecte à la 'variable' locale qui est l’argument d’une instruction using ou lock. L’appel Dispose ou le déverrouillage se produira sur la valeur d’origine de la variable locale.
Il existe plusieurs scénarios où les blocs using
ou lock
provoquent une fuite temporaire de ressources. En voici un exemple :
thisType f = null;
using (f)
{
f = new thisType();
...
}
Dans ce cas, la valeur d’origine (null) de la variable thisType
est supprimée à la fin de l’exécution du bloc using
, mais l’objet thisType
créé dans le bloc ne l’est pas, même s’il fait finalement l’objet d’une récupération de mémoire.
Pour résoudre cette erreur, utilisez la forme suivante .
using (thisType f = new thisType())
{
...
}
Dans ce cas, l’objet thisType
nouvellement alloué est supprimé.
Le code suivant génère l’erreur 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() { }
}
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :