Derleyici Uyarısı (düzey 2) CS0728
Bir using veya lock deyiminin bağımsız değişkeni olan yerel 'değişkene' yanlış atama olabilir. Dispose çağrısı veya kilidi açma yerel özgün değerinde gerçekleşir.
veya lock
bloklarının geçici olarak kaynak sızıntısına neden olacağı çeşitli senaryolar using
vardır. Aşağıda bir örnek verilmiştir:
thisType f = null;
using (f)
{
f = new thisType();
...
}
Bu durumda, bloğun yürütülmesi tamamlandığında değişkenin thisType
null gibi özgün değeri atılır using
, ancak bloğun thisType
içinde oluşturulan nesne olmaz, ancak sonunda çöp toplanır.
Bu hatayı düzeltmek için aşağıdaki formu kullanın:
using (thisType f = new thisType())
{
...
}
Bu durumda, yeni ayrılan thisType
nesne atılır.
Aşağıdaki kod cs0728 uyarısını oluşturur.
// 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() { }
}
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin: