Обнаружил, что в .NET в этом плане не так все просто как в VB6. Несколько раз перечитал Object Lifetime и так и не понял:
1) Nothing имеет смысл использовать для уничтожения объекта только тогда, когда он не содержит ссылок на другие объекты?
2) Если на объект есть N ссылок, то сначала нужно удалить N-1 с помощью Nothing, а последнюю с помощью Dispose?
3) Имеет ли смысл после obj.Dispose делать obj = Nothing?
4) Что произойдет, если из объекта А вызвать Dispose объекта B, но на него есть ссылка из объекта С?
Есть библиотека классов, в ней класс A, экземпляр которого создает внешнее приложение. Класс A создает экземпляры классов B, C и D, причем А, B и С имеют ссылки друг на друга, на D, а D не имеет никаких ссылок. Для класса D делать Implements IDisposable, я так понимаю, не нужно? Какова должна быть стратегия уничтожения ссылок в данном примере?