2009-10-19 2 views
4

Имеет ли объект System.Collections.Hashtable устаревший?Являются ли объекты Hashtable полезными?

С внедрением и уточнениями в generics от C# v2 и v3 это было давно, так как я нашел Hashtable более подходящим, чем общий словарь. В буквальном смысле, я не могу вспомнить последний раз, когда я использовал Hashtable.

Просто интересно, если кто-то нашел случай, когда Hashtable по-прежнему целесообразно или предпочтительным для осуществления и основы для этого решения - простота использования, производительность, размер сбора, тип объекта и т.д.

UPDATE : имел смысл ограничить этот вопрос до C#.

+0

Похоже на тип вики-сообщества. Будет добавлено, если каждый считает, что вопрос полезен. – jro

ответ

12

Помимо очевидного случая, когда вы должны использовать Hashtable в существующем API, который ожидает один (например, языки, которые еще не поддерживают общие типы). Вам также может потребоваться использовать их, если вам нужно получить к ним доступ из COM. Я считаю, что Hashtable - COM видимый, тогда как Словарь - нет.

Кроме этого, вы, как правило, хотите использовать словарь <>, потому что он избегает бокса (удар производительности) и обеспечивает безопасность типов.

+0

Ahh, COM Interop. Хорошая точка зрения. – jro

1

Hashtable все еще полезен в тех случаях, когда вы имеете дело с языком или версией языка, который не поддерживает общие типы.

EDIT

Для C# 2.0 или выше, Hashtable действительно только полезно для следующих сценариев

  • Вы хотите получить предыдущий семантический из IDictionary например возвращение нулевой против бросали в в случае, если ключ отсутствует в таблице.
  • Работа с унаследованным API, который выставляет на Hashtable значение

Hashstable еще полезна в качестве общей карты цели, если вы застряли в C# 1.0 :)

+0

Спасибо, Джаред, я должен уточнить свой вопрос, чтобы отразить C#, в частности. – jro

+0

Сценарий «null/throw» - это тот, который соскользнул с ума. Я все же мысленно предпочитаю синтаксис этого подхода в сравнении с общим типом Содержит (ключ), хотя лучшие практики, похоже, говорят иначе. – jro

Смежные вопросы