Допустим, у меня есть объект C
, который содержит ссылки на экземпляры самого себя, а также реализует IDisposable
. Как удалять ссылки на другие экземпляры C
? Должен ли я рекурсивно называть их методы dispose
или я должен просто установить их равными нулю? Другими словами, какая из следующих моделей предпочтительна?C# - Утилизация рекурсивных объектов
Модель 1: Рекурсивный Утилизация
public class C : IDisposable
{
public List<C> subItems = new List<C>();
public void Dispose()
{
foreach (C subItem in subItems)
subItem.Dispose();
// Dispose other stuff
}
}
Модель 2: Располагая приравнивая к null
public class C : IDisposable
{
public List<C> subItems = new List<C>();
public void Dispose()
{
subItems = null;
// Dispose other stuff
}
}
Умм, модель 2 не располагая подпунктами. –
Почему ваш класс IDisposable? –
@HenkHolterman У меня не было причин в виду, я просто интересовался своей образовательной выгодой. Это всего лишь абстрактная модель. – user3002473