Есть ли причины использовать Hashtables, когда есть универсальный класс Dictionary? Если да, то что они?
Нет, если вы не используете .NET 1.1 или микро-фреймворк, нет. То же самое относится и к другим коллекциям, предшествующим дженерикам, за исключением небольшого некоторых классов в пространстве имен System.Collections.Specialized, которые не все имеют прямые родовые замены.
System.Collections.Specialized
Словарь быстрый, потому что он знает, что хранить. Но если вы хотите хранить объекты, то HashTable быстрее, потому что элементы HashTable являются типами объектов.
Возможно, больше нет, если, возможно, вы не работаете или не хотите взаимодействовать с кодом .NET 1.x.