2008-10-28 15 views
8

Często używam Dictionary w C# 2.0 z pierwszym kluczem jako ciągiem zawierającym unikalny identyfikator.Słownik <ciąg, MyObject> lub lista <MyObject> z C# 3.5?

Uczę się C# 3.0 + i wydaje mi się, że mogę teraz po prostu użyć listy i po prostu zrobić LINQ na tym obiekcie, aby uzyskać konkretny obiekt (z .where()).

Więc, jeśli dobrze rozumiem, klasa Dictionary straciła swój cel?

Odpowiedz

13

Nie, słownik jest jeszcze skuteczniejszy, aby odzyskać dane za pomocą klucza.

lista, którą musisz jeszcze przetestować, aby znaleźć to, czego szukasz. Słownik wykonuje wyszukiwanie.

2

IMHO podejście do słownika będzie DUŻO szybsze niż LINQ, więc jeśli masz tablicę zawierającą wiele elementów, powinieneś raczej używać słownika.

5

Jeśli masz już listę, to wybranie LINQ select przeskanuje każdy element na liście, porównując go z tym, którego szukasz.

Słownik jednak oblicza kod skrótu szukanego ciągu (zwracany przez metodę GetHashCode). Wartość ta jest następnie używana do bardziej wydajnego wyszukiwania napisu. Aby uzyskać więcej informacji o tym, jak to działa, zobacz: Wikipedia.

Jeśli masz więcej niż kilka ciągów, początkowa metoda (List) zacznie boleć powoli.

Powiązane problemy