Rozumiem, że słownik nie ma problemów związanych z boksem i nie jest związany z boksem ani z faster in performance. Czy są przypadki, że użycie Hashtable byłoby bardziej wskazane w porównaniu ze Słownikiem? DziękiHashtable vs Dictionary
Odpowiedz
Dla .Net 2.0, prawie zawsze potrzebujesz słownika. Należy jednak pamiętać, że nie jest to tylko "drop in replacement" dla istniejącej tabeli Hashtable. Istnieją pewne różnice w sposobie ich działania (głównie sposób radzenia sobie z zerami), co oznacza, że musisz najpierw sprawdzić kod.
Hashtable
jest dość przestarzałe. Może być przydatne do łączenia ze starszym kodem.
Dictionary
to ogólna klasa wprowadzona w .NET 2.0, wraz z innymi klasami w przestrzeni nazw System.Collections.Generic
. Zastępują one klasy w przestrzeni nazw System.Collections
.
Główną zaletą HashTable jest to, że można z niego korzystać i docelowy .NET < 2.0.
W przeciwnym razie słownik < T, Y > (używany poprawnie) jest o wiele lepszy pod każdym względem.
Oto co wiem
1) słownik sklepów w par wartości kluczowych 2) Hastable także sklepów w par wartości kluczowych, ale używa klawisza skrótu do badania zawartości.
Więc gdybym miał zdecydować, czego użyć, powinienem użyć hashtable, jeśli moja kolekcja jest ogromna i chcę wyszukać konkretny przedmiot? Używaj słownika, jeśli kolekcja nie jest tak duża?
Również pytanie uzupełniające, w języku C#, hastable nie łańcuchów jak w c lub C++ jest to poprawne?
+1 Za wzmiankę o obsłudze wartości null. Dobrze byłoby wyjaśnić, że więcej, ponieważ może być nieco nieoczekiwane, uzyskać wyjątek zamiast wartości null, gdy klucz nie istnieje w słowniku. –