Upozornění kompilátoru (úroveň 2) CS0728
Pravděpodobně nesprávné přiřazení k místní proměnné, což je argument příkazu using nebo lock. Volání Dispose nebo odemknutí proběhne na původní hodnotě místního prostředí.
Existuje několik scénářů, kdy using
nebo lock
bloky způsobí dočasný únik prostředků. Tady je jeden příklad:
thisType f = null;
using (f)
{
f = new thisType();
...
}
V tomto případě bude původní hodnota proměnné, například null, thisType
uvolněna při using
dokončení provádění bloku, ale thisType
objekt vytvořený uvnitř bloku nebude, i když nakonec získá uvolňování paměti.
Pokud chcete tuto chybu vyřešit, použijte následující formulář:
using (thisType f = new thisType())
{
...
}
V tomto případě bude nově přidělený thisType
objekt odstraněn.
Následující kód vygeneruje upozornění 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() { }
}
Zpětná vazba k produktu .NET
.NET je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby: