У меня есть теория, что механизм сборки мусора CLR означает, что я могу обходиться без циклических ссылок в моей иерархии объектов, не создавая взаимоблокировки для разборки и сборки мусора. Это безопасное предположение? (Целевой язык VB.NET)
Сборщик мусора .NET - это метка поколений и сборщик мусора.Он не использует подсчет ссылок.Так что да, безопасно иметь круговые ссылки.Язык не имеет значения
Согласно этой статье: https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5109829.html
Циркуляр это проблема, которая возникает, когда есть два объекта, которые относятся к каждому Другой. Допустим, у вас есть класс А, который относится к классу B. Если класс B также относится к классу А, то у нас есть круговая ссылка. Это происходит в много ситуаций. Типичный пример для это отношения родитель-ребенок между объектами, где ребенок взаимодействует с родительским объектом и также содержит ссылку на родителя объект. Это может привести к объектам это не будет очищено до приложение было закрыто. .NET способ сбора мусора решает проблема круговой ссылки потому что сборщик мусора умеет очистить любой предмет, который достижимы от корня.
EDIT: Судя по этому сообщению: http://blogs.msdn.com/abhinaba/archive/2009/01/27/back-to-basics-reference-counting-garbage-collection.aspx кажется, что сборка мусора в .Net не основана на подсчете ссылок для сборки мусора.
Еще одна статья, которую стоит прочитать (подробно объясняется сборка мусора): http://www.simple -talk.com / dotnet / .net-framework / понимание-garbage-collection-in-.net /