Tek bir 'kullanma' ifadesinde iç içe geçmiş tek kullanımlıkların kullanımı hakkında hızlı soru: Tek kullanımlık kullanma ifadelerini her zaman yazmalı mıyım yoksa bunları bir yuvaya yerleştirebilir miyim? Örnek:İç içe geçirme 'Tek kullanımlık' ifadesi tek bir 'kullanma' ifadesiyle
using(FileStream inFile = new FileStream("myFile.txt", FileMode.Open))
using(GZipStream gzip = new GZipStream(inFile, CompressionMode.Decompress))
using(FileStream outFile = new FileStream("myNewFile.txt", FileMode.CreateNew))
{
gzip.CopyTo(outstream);
}
vs
using(GZipStream gzip = new GZipStream(new FileStream("myFile.txt", FileMode.Open), CompressionMode.Decompress))
using(FileStream outFile = new FileStream("myNewFile.txt", FileMode.CreateNew))
{
gzip.CopyTo(outstream);
}
Sadece merak blok yürütme bitince GZipStream veya kullanan açıklamada, çünkü "myfile.txt" ismi açıklanmayan FileStream temizlediğini alırsa eğer açık kalırsa ve bundan sonra da temizlenmesi gerekiyorsa.
Düzenleme: Sadece açık olmak gerekirse, ifadeleri kullanarak yuvalama hakkında sormuyorum. Başka bir IDisposable'ın 'using' ifadesinin içinde oluşturulmuş bir IDisposable'ın bloğun sonunda imha edilip edilmeyeceğini soruyorum. Neden ya da neden olmasın herhangi bir açıklaması takdir edilecektir.
Olası çoğaltılabilir [C# içinde ifadelerle iç içe] (http://stackoverflow.com/questions/1329739/nested-using-statements-in-c-sharp) – Joshua
FileStream yapıcısı başarılı olursa GZipStream yapıcısı başarısız olur. iyi oops. –
Belki de IDisposable'ı uygulayan ve hata ayıklayıcıda ne olduğunu izleyen çok basit bir kukla sınıflar kümesi kurmaya değer mi? – DanS