2010-01-16 15 views
18

Buduję aplikację w języku C#, jednak jestem nowy w tym języku, choć jest łatwy do opanowania, ponieważ jest zbyt podobny do Javy.Struktury danych C#

Jednak gubię się w strukturach danych, ponieważ nie znalazłem listy kompleksowych dostępnych struktur danych za pomocą ich metod, takich jak sposób, w jaki Java je ma.

Ktoś ma listę referencyjną dostępnych struktur danych dla C# i ich metod?

+1

szukasz struktury scenariusza opartego na danych (klient, produkt, książki), lub w przypadku bardzo ogólnych struktur danych (drzewo, Lista, słownik)? – Eilon

+0

Spójrz na https://github.com/riyadparvez/data-structures-csharp – user

Odpowiedz

18

Większość struktur danych, których będziesz używać w języku C#, znajduje się w System.Collections.Generic namespace. Istnieje kilka rzadko używanych struktur danych w System.Collections.Specialized namespace. Istnieją również starsze, nie generyczne wersje struktur danych, które są w większości przestarzałe od czasu wprowadzenia generycznych w języku C# 2.0 dostępnym w System.Collections namespace.

Scott Mitchell ma ładny artykuł wprowadzający o niektórych strukturach danych w .NET: An Extensive Examination of Data Structures Using C# 2.0.

Jeśli pochodzisz z tła Java, zauważysz, że w przeciwieństwie do Java, struktury danych .NET są nazwane po ich funkcji, a nie w sposobie ich implementacji.

0

Podobnie jak kolekcje Java, C# ma hierarchię interfejsów obejmującą kolekcje (ICollection), listy (IList) i semantykę mapy (IDictionary). Mapuje 1: 1 na java.util.collections, z wyjątkiem java.util.Set. Dzisiaj nie ma zestawu w języku C#. ISet ma być w drodze w .NET 4.0.

+4

HashSet całkiem mi odpowiada. –

2

Będziesz ich kochać. Struktury danych C# w połączeniu z LINQ oferują znacznie więcej niż Java. Sprawdź obszar nazw System.Collections.Generic. Jedna ważna uwaga, że ​​prawie każdy zbiór generic realizuje IEnumerable<T> interfejsu taki czy inny sposób i możesz LINQ do dowolnego IEnumerable <T> obiektu:

List<SomeClass> yourList = new List<SomeClass>(); 
// Add elements ... 
var redElementsOnly = yourList.Where(e => e.IsRed); 

Sprawdź klasa System.Linq.Enumerable pełną listę tego, co LINQ może zrobić dla ty.