Ostrzeżenie kompilatora (poziom 2) CS0728
Prawdopodobnie nieprawidłowe przypisanie do lokalnej zmiennej , która jest argumentem instrukcji using lub lock. Wywołanie dispose lub odblokowanie nastąpi na oryginalnej wartości lokalnego.
Istnieje kilka scenariuszy, w których using
lub lock
bloki spowodują tymczasowy wyciek zasobów. Oto jeden przykład:
thisType f = null;
using (f)
{
f = new thisType();
...
}
W takim przypadku oryginalna wartość, taka jak null, zmiennej thisType
zostanie usunięta po using
zakończeniu wykonywania bloku, ale thisType
obiekt utworzony wewnątrz bloku nie będzie, chociaż w końcu zostanie odzyskany element bezużyteczny.
Aby rozwiązać ten błąd, użyj następującego formularza:
using (thisType f = new thisType())
{
...
}
W takim przypadku nowo przydzielony thisType
obiekt zostanie usunięty.
Poniższy kod spowoduje wygenerowanie ostrzeżenia 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() { }
}
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię: