У меня есть несколько классов, которые содержат ссылки на другие классы через члены экземпляра IDictionary.
Вроде так:
class A
{
private readonly Dictionary<int, B> _particles = new Dictionary<int, B>();
public void CreateNewB(int someInt)
{
var b = new B();
if (!_particles.ContainsKey(someInt)
_particles.Add(someInt, b);
}
}
так что это настройка, и я НИКОГДА не удаляю их из этого словаря, но по какой-то причине деструктор для класса B время от времени вызывается при запуске GC, и я не понимаю, почему.
Может быть, это связано с тем, как класс Dictionary добавляет новые ссылки?
FIXED :
Хорошо, спасибо всем за ваши ответы, я, безусловно, теперь хорошо разбираюсь в GC и деконструкторах.
Но проблема была моей, я добавлял someInt только в том случае, если он еще не существовал и из-за некорректной бизнес-логики, someInt всегда был 1, поэтому первый раз через него работал, и деконструкторы не вызывали. Но во второй раз экземпляр "b" просто не был добавлен в список и был очищен при запуске GC.
Еще раз спасибо всем, кто выручил!