Tutorial de colecciones de C# con ejemplos
โก Resumen inteligente
En C#, las colecciones ofrecen una forma flexible de almacenar y gestionar grupos de objetos. A diferencia de los arrays, las colecciones crecen y se reducen en tiempo de ejecuciรณn, y los espacios de nombres System.Collections y System.Collections.Generic proporcionan tipos predefinidos para listas, diccionarios, pilas y colas.

En nuestro tutorial anterior, aprendimos cรณmo podemos usar matrices en C#. Echemos un vistazo rรกpido. Las matrices en programaciรณn se utilizan para agrupar un conjunto de objetos relacionados. Por lo tanto, se podrรญa crear una matriz o un conjunto de nรบmeros enteros, a los que se podrรญa acceder mediante un nombre de variable.
ยฟQuรฉ son las colecciones en C#?
Las colecciones son similares a Matrices, proporciona una forma mรกs flexible de trabajar con un grupo de objetos.
En las matrices, habrรกs notado que necesitas definir la cantidad de elementos en una matriz de antemano. Esto debรญa hacerse cuando se declarรณ la matriz.
Pero en una colecciรณn, no es necesario definir el tamaรฑo de la colecciรณn de antemano. Puede agregar elementos o incluso eliminar elementos de la colecciรณn en cualquier momento. Este capรญtulo se centrarรก en cรณmo podemos trabajar con las diferentes colecciones disponibles en C#.
Clases System.Colecciones
El .NET Framework agrupa las clases de colecciรณn originales no genรฉricas dentro del espacio de nombres System.Collections. La siguiente tabla resume los tipos principales que puede usar de inmediato.
| Colecciรณn | Mareas Ideales para Lecciones |
| Lista de arreglo | La colecciรณn ArrayList es similar a los Arrays. tipo de datos en C#. La mayor diferencia es la naturaleza dinรกmica de la colecciรณn de listas de matrices. |
| Apilar | La pila es una colecciรณn de casos especiales que representa un concepto de รบltimo en entrar, primero en salir (LIFO). |
| colas | La cola es una colecciรณn de casos especiales que representa un concepto de primero en entrar, primero en salir. |
| Tabla de picadillo | Una tabla hash es una colecciรณn especial que se utiliza para almacenar elementos clave-valor. |
| ListaOrdenada | SortedList es una colecciรณn que almacena pares clave-valor en orden ascendente de clave de forma predeterminada. |
| BitArray | Una matriz de bits es una matriz de estructura de datos que almacena bits. |
Colecciones genรฉricas en C#
Las clases no genรฉricas mencionadas anteriormente almacenan cada elemento como un objeto genรฉrico, lo que significa que el compilador no puede verificar el tipo y el programa incurre en un pequeรฑo costo al convertir los valores a un tipo especรญfico. Para solucionar esto, C# agregรณ el espacio de nombres System.Collections.Generic, donde cada colecciรณn estรก vinculada a un tipo declarado.
Una colecciรณn genรฉrica como Lista Solo acepta cadenas de texto, por lo que los errores se detectan en tiempo de compilaciรณn y no se requiere ninguna conversiรณn de tipo al leer un elemento. Esto hace que las colecciones genรฉricas sean mรกs seguras, rรกpidas y fรกciles de leer, razรณn por la cual son la opciรณn predeterminada en el cรณdigo C# moderno.
Las colecciones genรฉricas mรกs comunes se enumeran a continuaciรณn:
- Lista : Una lista redimensionable basada en รญndices, el reemplazo genรฉrico de ArrayList.
- Diccionario : Almacena pares clave-valor con bรบsquedas rรกpidas basadas en hash.
- Conjunto de hashes : Solo admite valores รบnicos y operaciones de conjuntos como la uniรณn.
- Cola : Una colecciรณn de tipo "primero en entrar, primero en salir", la versiรณn genรฉrica de Queue.
- Pila : Una colecciรณn de รบltimo en entrar, primero en salir, la versiรณn genรฉrica de Stack.
- Lista ordenada : Mantiene los pares clave-valor ordenados por clave en orden ascendente.
Ejemplo de colecciรณn de listas en C#
La lista es la colecciรณn genรฉrica mรกs utilizada porque se comporta como un array dinรกmico. El siguiente ejemplo crea una lista de cadenas, agrega y elimina elementos, lee su tamaรฑo y luego imprime los valores restantes. Todo el cรณdigo estรก escrito en el archivo Program.cs.
Paso 1) Importa el espacio de nombres System.Collections.Generic y declara una lista de cadenas.
Paso 2) Agregue elementos con el mรฉtodo Add y elimine uno con el mรฉtodo Remove.
Paso 3) Lee la propiedad Count y luego recorre la lista con una instrucciรณn foreach.
using System; using System.Collections.Generic; namespace DemoApplication { class Program { static void Main(string[] args) { List<string> tutorials = new List<string>(); tutorials.Add("Java"); tutorials.Add("Python"); tutorials.Add("Kotlin"); tutorials.Remove("Python"); Console.WriteLine(tutorials.Count); foreach (string tutorial in tutorials) { Console.WriteLine(tutorial); } Console.ReadKey(); } } }
Code Explicaciรณn:-
- Se importa el espacio de nombres System.Collections.Generic para que el tipo List estรฉ disponible para el programa.
- Una nueva lista Se crea un tutorial llamado y se agregan tres nombres con el mรฉtodo Add.
- El mรฉtodo Remove elimina el valor โPythonโ, lo que deja dos elementos en la lista.
- La propiedad Count devuelve el nรบmero de elementos, y el bucle foreach imprime cada valor restante en orden.
Cuando se ejecuta el programa, primero imprime el recuento de 2 (XNUMX %) Java y Kotlin en lรญneas separadas. Esto muestra cรณmo una colecciรณn cambia su tamaรฑo en tiempo de ejecuciรณn, algo que una matriz fija no puede hacer.
Diferencia entre arrays y colecciones en C#
Ambos un matriz y una colecciรณn agrupan elementos relacionados bajo un mismo nombre, pero se comportan de manera diferente una vez que el programa estรก en ejecuciรณn. Saber cuรกndo usar cada uno te ayuda a escribir cรณdigo mรกs limpio y eficiente.
Las principales diferencias se enumeran a continuaciรณn:
- Tamaรฑo: Un array tiene una longitud fija que se establece al declararlo, mientras que una colecciรณn puede crecer o encogerse en cualquier momento.
- Manejo de tipos: Un array almacena un รบnico tipo, mientras que una colecciรณn puede ser segura en cuanto a tipos con genรฉricos o contener objetos de tipos mixtos cuando no es genรฉrica.
- Ubicaciรณn: Los arrays estรกn integrados en el lenguaje, mientras que las clases de colecciรณn residen en los espacios de nombres System.Collections y System.Collections.Generic.
- Operaciones integradas: Las colecciones ofrecen mรฉtodos ya preparados para agregar, eliminar, buscar y ordenar elementos, mientras que las matrices solo proporcionan un acceso indexado bรกsico.
- Mejores use: Elija una matriz cuando se conozca y sea fijo el nรบmero de elementos, y una colecciรณn cuando el recuento cambie a medida que se ejecuta el programa.
En resumen, los arrays son la mejor opciรณn para datos de tamaรฑo fijo, mientras que las colecciones ofrecen la flexibilidad que necesitan la mayorรญa de las aplicaciones del mundo real.
