C# 'da, yönetilmeyen kaynakların deterministik olarak temizlenmesi istiyorsanız, "using" anahtar sözcüğünü kullanabilirim. Ama birden fazla bağımlı nesneler için, bu daha fazla ve daha iç içe biter:İç içe geçmiş "kullanma" lardan daha iyi bir deterministik imha modeli var mı?
using (FileStream fs = new FileStream("c:\file.txt", FileMode.Open))
{
using (BufferedStream bs = new BufferedStream(fs))
{
using (StreamReader sr = new StreamReader(bs))
{
// use sr, and have everything cleaned up when done.
}
}
}
C++, ben böyle yapmak için yıkıcı kullanabilme alışkınım:
{
FileStream fs("c:\file.txt", FileMode.Open);
BufferedStream bs(fs);
StreamReader sr(bs);
// use sr, and have everything cleaned up when done.
}
orada mı Bunu yapmak için C# daha iyi bir yol? Yoksa çoklu yuvalanma seviyelerine mi takıldım?
Bu tıpkı yuvalanmış gibi - her bir ardışık kullanım tek satırlık kod bloğu olarak ele alınır - bir if ifadesini düşünün, sans {}. Burada kazandığınız tek şey, SEKME tuşuna basmaktan kaçınmak. –
Greg Hurlman ile aynı fikirdeyim, bu bir formatlama hilesidir: sanki, vs, 'using' tek bir deyimi kontrol eder, ama normalde bunu bir deyim bloğuyla kullanırsınız. –
Evet, bu bir biçimlendirme hilesidir, ancak asıl önemli olan nokta, C# 'ya yeni birisi için yararlı olmayan bir yardımcıdır. – Eclipse