Baca dalam bahasa Inggris

Bagikan melalui


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.

Contoh

Kode berikut akan menghasilkan peringatan CS0728.

C#
// 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() { }  
}