Peringatan kompiler (tingkat 2) CS0728
Mungkin penugasan yang salah ke 'variabel' lokal yang merupakan argumen untuk pernyataan penggunaan atau penguncian. Panggilan Buang atau buka kunci akan terjadi pada nilai asli lokal.
Ada beberapa skenario ketika blok using
atau lock
akan mengakibatkan kebocoran sumber daya sementara. Berikut adalah salah satu contohnya:
thisType f = null;
using (f)
{
f = new thisType();
...
}
Dalam hal ini, nilai asli, seperti null, dari variabel thisType
akan dibuang ketika blok using
selesai dieksekusi, tetapi objek thisType
yang dibuat di dalam blok tidak demikian, meskipun pada akhirnya akan mengumpulkan sampah.
Untuk mengatasi kesalahan ini, gunakan format berikut:
using (thisType f = new thisType())
{
...
}
Dalam hal ini, objek thisType
yang baru dialokasikan akan dibuang.
Kode berikut akan menghasilkan peringatan 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() { }
}
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: