БастыАудиоБалаларға арналған
Мурин Игорь
Мурин Игорьдәйексөз келтірді16 сағат бұрын
Наличие не обязательно означает достижимость. Объект мог стать недоступным со времени последней сборки мусора. Или, возможно, с момента выделения объекта вообще не было сборки мусора. TryGetTarget заботит не то, доступен ли объект прямо сейчас, а лишь то, обнаружил ли сборщик мусора, что он подлежит освобождению. Если объект доступен, TryGetTarget предоставляет его через параметр out, и это будет строгой ссылкой. Таким образом, если метод возвращает значение true, нам не нужно беспокоиться о том, что через мгновение объект может стать недоступным, — тот факт, что мы теперь сохранили эту ссылку в переменной, которую вызывающая сторона передала через аргумент cachedItem, сохранит и сам объект. Если TryGetTarget возвращает false, мой код удаляет соответствующую запись из словаря, поскольку она представляет объект, которого больше не существует. Это важно, потому что даже если слабая ссылка не сохранит свою цель, WeakReference<T> — это отдельный объект, и сборщик не может освободить его, пока я не удалю его из этого словаря.
Программируем на C# 8.0. Разработка приложений
Программируем на C# 8.0. Разработка приложений
·
Иэн Гриффитс
Программируем на C# 8.0. Разработка приложений
Иэн Гриффитсжәне т.б.
2.2K

Кіру не тіркелу пікір қалдыру үшін