2010-01-16 19 views
18

Estoy construyendo una aplicación en C#, sin embargo, soy nuevo en el lenguaje, aunque es bastante fácil de aprender porque es demasiado similar a Java.C# estructuras de datos

Sin embargo, me estoy perdiendo con las estructuras de datos ya que no he encontrado una lista completa de estructuras de datos disponibles con sus métodos, como cómo los tiene Java.

¿Alguien tiene una lista de referencia de las estructuras de datos disponibles para C# y sus métodos?

+1

¿Está buscando una estructura basada en escenario de datos (cliente, producto, libro), o para estructuras de datos muy generales (Árbol, Lista, diccionario)? – Eilon

+0

Eche un vistazo a https://github.com/riyadparvez/data-structures-csharp – user

Respuesta

18

La mayoría de las estructuras de datos que usará en C# se encuentran en el System.Collections.Generic namespace. Hay algunas estructuras de datos raramente utilizadas en el System.Collections.Specialized namespace. Además, hay algunas versiones más antiguas, no genéricas de estructuras de datos que están en gran parte en desuso desde la introducción de los genéricos en C# 2.0 disponible en el System.Collections namespace.

Scott Mitchell tiene un bonito artículo introductorio sobre algunas estructuras de datos en .NET: An Extensive Examination of Data Structures Using C# 2.0.

Si proviene de un fondo de Java, notará que, a diferencia de Java, las estructuras de datos de .NET llevan el nombre de su función, no la forma en que se implementan.

0

Al igual que las Colecciones Java, C# tiene una jerarquía de interfaces que incluye la semántica de colecciones (ICollection), listas (IList) y mapa (IDictionary). Mapea 1: 1 en java.util.collections, con la excepción de java.util.Set. No hay ningún conjunto en C# hoy. Se supone que ISet está en camino en .NET 4.0.

+4

HashSet me queda bastante bien. –

2

Te va a encantar. Las estructuras de datos C# combinadas con LINQ ofrecen mucho más que Java. Consulte el espacio de nombre System.Collections.Generic. Una nota importante que casi cualquier colección genérica implementa el IEnumerable<T> interfaz de una manera u otra y que pueda LINQ a cualquier IEnumerable <T> objeto:

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

Mira la clase System.Linq.Enumerable para obtener una lista completa de lo que LINQ puede hacer por tú.