Существует ли эквивалент для класса Java WeakHashMap в C#?

Существует ли класс C#, который предоставляет карте слабые ключи или/и слабые значения? Или по крайней мере WeakHashMap как функциональность.

12
задан Daniel Sperry 17 January 2010 в 15:59
поделиться

2 ответа

В Java вы можете даже эмулировать расширяемую Enums, позволяя им реализовать тот же интерфейс, а затем добавлять все свои значения в какую-то коллекцию, вызывая их значения ().

-121--2889094-

Проект архитектуры arp - отличная отправная точка для руководства по применению DDD. Он основан на Nhibernate, но принципы используются одинаково для EF ...

-121--2467932-

в .NET 3.5 и ниже такой структуры нет. Однако я записал один для бокового проекта и опубликовал код в в следующем месте .

Начало .NET 4.0, имеется доступная структура ConnectalWealStable в пространстве имен runtime.comPilerservicers, которое также делает трюк.

17
ответ дан 2 December 2019 в 05:27
поделиться

Текнетный сценарий, на который вы ссылаетесь, прекрасно работает под Win 7 (с Python 2.5 32bits), и я действительно не понимаю, почему он не должен.

Действительная слабость подхода WMI заключается в том, что в нем перечислены только продукты, установленные с помощью установщика Windows. Так что это не даст вам полный список. Многие программы используют различные программы установки. Просто сравните результаты между (Выбрать * из Win32_Product) и тем, что отображается на панели управления. Таким образом, если вы не уверены, что программа, которая вмешивается в ваш список, установлена с MSI, WMI определенно не является ответом.

Так что это может быть не очень pythonic, но лучший способ, насколько я знаю, использовать реестр, как вы сделали. Именно так работает панель управления, поэтому, по крайней мере, Windows считает ее самым надежным способом.

-121--3159686-

Меня не удивляет тот факт, что вы получаете худшие результаты при профилировании вашего приложения как инструментария java-кода, как правило, всегда замедляет его выполнение. Это на самом деле хорошо запечатлено на странице Википедии на Профилирование , где упоминается, что инструментарий может вызывать изменения в производительности программы, потенциально вызывая неточные неточные результаты и heisenbugs (из-за эффекта наблюдателя : наблюдатели влияют на то, что они наблюдают, простым актом наблюдения только за ним ).

Сказав это, если вы хотите измерить скорость, я думаю, что вы не используете правильный инструмент. Профилировщики используются для поиска узких мест в приложении (и для этого вы на самом деле не заботитесь об общем воздействии). Но если вы хотите протестировать вашу библиотеку, вы должны использовать инструмент тестирования производительности (например, что-то вроде JMeter ), который сможет дать вам среднее время выполнения для каждого вызова. Вы получите гораздо лучшие и более надежные результаты с правильным инструментом.

-121--3909904-

Ближайшим эквивалентом платформы, вероятно, является Словарь < K, WeakReference < V > > . То есть это просто обычный словарь, но со значениями слабых ссылок.

5
ответ дан 2 December 2019 в 05:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: