В С#, если я хочу детерминистически очистить не управляемые ресурсы, я могу использовать ключевое слово "using". Но для нескольких зависимых объектов это заканчивается в дальнейшем и далее:
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.
}
}
}
В С++ я привык использовать деструкторы для этого:
{
FileStream fs("c:\file.txt", FileMode.Open);
BufferedStream bs(fs);
StreamReader sr(bs);
// use sr, and have everything cleaned up when done.
}
Есть ли лучший способ в С# для этого? Или я застрял с несколькими уровнями гнездования?