İf kullanarak bitmeden geri dönersem ne olur? Bu sözde imha edecek?
Aşağıdaki kodu buldum
using(MemoryStream ms = new MemoryStream())
{
//code
return 0;
}
dispose()
yöntemi using
deyimi parantez sonunda denir }
değil mi? 7 ** using
deyimi bitmeden beri MemoryStream
nesneyi uygun bir şekilde imha edilmesi olacak? Burada ne olur?
CEVAP
Evet, Dispose
adı verilecek. Adı çıkmaz, yürütme yaprakları kapsamı using
blok, ne olursa olsun ne demek sürdü bırakın bloğu, sonunda yürütme blok, a return
deyim, ya da bir istisna.
@Noldorin doğru olarak işaret ettiği gibi, kodu using
bir blok kullanarak Dispose
finally
blok çağrıldığını 14*/finally
*içine derlenmiş alır. Örneğin, aşağıdaki kod:
using(MemoryStream ms = new MemoryStream())
{
//code
return 0;
}
etkili olur:
MemoryStream ms = new MemoryStream();
try
{
// code
return 0;
}
finally
{
ms.Dispose();
}
finally
try
blok yürütme tamamlandıktan sonra çalıştırmak için garanti edilir çünkü yani, yürütme yol, Dispose
ne olursa olsun adı, ne olursa olsun garanti edilir.
Daha fazla bilgi için, this MSDN article bkz.
Ek:
Sadece küçük bir uyarı Ekle: çünkü Dispose
garantili olarak adlandırılan, hemen hemen her zaman iyi bir fikir olduğundan emin olun Dispose
hiç bir istisna atar zaman uygulamak IDisposable
. Ne yazık ki, ana kütüphane olan bazı sınıflar vardıryapınDispose
sana bakıyorum, XML Servisi -- çağrıldığında bazı durumlarda Referans / İstemci Proxy atın! -- Peki bu ne zaman olacak olması çok zor izini orijinal durum varsa Dispose
çağrıldı sırasında bir özel durum yığın gevşeyin beri özgün özel durum alır yuttu lehine yeni oluşturulan özel durum tarafından Dispose
Ara. Çıldırtıcı sinir bozucu olabilir. Ya da sinir bozucu derecede çıldırtıcı? İki kişiden biri. Belki her ikisi de.
Deyimini kullanarak bir geri alma eğer...
Eski bir geri alma gıt kullanarak kayd...
&Quot;farkı geri alma ne olur..."...
Her sekme için bir Yığın Android Parça...
Eğer bir Try bir değeri geri dönersem ...