Я действительно люблю WeakReference's. Но я хотел бы, чтобы был способ сообщить CLR, сколько (скажем, по шкале от 1 до 5), насколько слаб вы считаете ссылкой. Это было бы великолепно.Почему .NET не имеет SoftReference, а также WeakReference, например Java?
Java имеет SoftReference, WeakReference, и я также считаю, что третий тип называется «фантомной ссылкой». Это три уровня, в которых у GC есть другой алгоритм поведения при принятии решения о том, получает ли этот объект отруб.
Я думаю о подклассификации .NET WeakReference (к счастью и слегка bizzarely не запечатан), чтобы сделать псевдо-SoftReference, основанный на таймере истечения или что-то в этом роде.
Возможно, если вы объясните, в чем проблема, которую вы пытаетесь решить, вы можете получить ответы с хорошими решениями. Обычно это нехорошо работать на этом уровне детализации, и некоторая форма кэша срока действия более уместна, но все зависит от проблемы. – 2008-11-28 01:37:30