Obtenga información sobre cómo administrar colecciones de datos mediante el tipo de lista genérico
En este tutorial se enseña a usar C# de forma interactiva, con el uso del explorador para escribir código de C# y ver los resultados de la compilación y ejecución del código. Contiene una serie de lecciones en las que se crean, modifican y examinan colecciones y matrices.
Sugerencia
Para pegar un fragmento de código dentro del modo de enfoque debe usar el método abreviado de teclado (Ctrl + v o cmd + v).
Creación de listas
Ejecute el código siguiente en la ventana interactiva. Seleccione el botón Entrar en el modo de enfoque. A continuación, escriba el bloque de código siguiente en la ventana interactiva (reemplace <name>
por su nombre) y seleccione Ejecutar:
var names = new List<string> { "<name>", "Ana", "Felipe" };
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Si está ejecutando esto en su entorno, en su lugar debe seguir las instrucciones de la versión local.
Ha creado una lista de cadenas, ha agregado tres nombres a esa lista y ha impreso los nombres en MAYÚSCULA. Los conceptos aplicados ya se han aprendido en los tutoriales anteriores para recorrer en bucle la lista.
El código para mostrar los nombres usa la característica interpolación de cadenas. Si un valor de string
va precedido del carácter $
, significa que puede insertar código de C# en la declaración de cadena. La cadena real reemplaza a ese código de C# con el valor que genera. En este ejemplo, reemplaza {name.ToUpper()}
con cada nombre, convertido a mayúsculas, porque se llama al método String.ToUpper.
Vamos a continuar indagando.
Modificación del contenido de las listas
La colección creada usa el tipo List<T>. Este tipo almacena las secuencias de elementos. Especifique el tipo de los elementos entre corchetes angulares.
Un aspecto importante de este tipo List<T> es que se puede aumentar o reducir, lo que permite agregar o quitar elementos. Puede ver los resultados si modifica el contenido una vez mostrado. Agregue el código siguiente debajo del código que ya ha escrito (debajo del bucle que imprime el contenido):
Console.WriteLine();
names.Add("Maria");
names.Add("Bill");
names.Remove("Ana");
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Se han agregado dos nombres más al final de la lista. También se ha quitado uno. La salida de este bloque de código muestra el contenido inicial y luego imprime una línea en blanco y el nuevo contenido.
List<T> también permite hacer referencia a elementos individuales a través del índice. Puede acceder a los elementos con los tokens [
y ]
. Agregue el código siguiente debajo del que ya haya escrito y pruébelo:
Console.WriteLine($"My name is {names[0]}.");
Console.WriteLine($"I've added {names[2]} and {names[3]} to the list.");
No puede acceder a elementos que estén más allá del final de la lista. Puede comprobar durante cuánto tiempo la lista usa la propiedad Count. Agregue el código siguiente para probarlo:
Console.WriteLine($"The list has {names.Count} people in it");
Vuelva a seleccionar Ejecutar para ver los resultados. En C#, los índices empiezan en 0, por lo que el índice más grande válido es uno menos que el número de elementos de la lista.
Búsqueda y orden en las listas
En los ejemplos se usan listas relativamente pequeñas, pero las aplicaciones a menudo pueden crear listas que contengan muchos más elementos, en ocasiones, con una numeración que engloba millares. Para encontrar elementos en estas colecciones más grandes, debe buscar diferentes elementos en la lista. El método IndexOf busca un elemento y devuelve su índice. Si el elemento no está en la lista, IndexOf
devuelve -1
. Pruébelo para ver cómo funciona. Agregue el código siguiente debajo del que ha escrito hasta ahora:
var index = names.IndexOf("Felipe");
if (index != -1)
{
Console.WriteLine($"The name {names[index]} is at index {index}");
}
var notFound = names.IndexOf("Not Found");
Console.WriteLine($"When an item is not found, IndexOf returns {notFound}");
No puede saber si un elemento está en la lista, por lo que debe comprobar siempre el índice devuelto por IndexOf. Si es -1
, significa que no se ha encontrado el elemento.
Los elementos de la lista también se pueden ordenar. El método Sort clasifica todos los elementos de la lista en su orden normal (por orden alfabético si se trata de cadenas). Agregue este código y vuelva a ejecutarlo:
names.Sort();
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Listas de otros tipos
Hasta el momento, se ha usado el tipo string
en las listas. Se va a crear una lista List<T> con un tipo distinto. Se va a crear una serie de números. Elimine el código que ha escrito hasta ahora y reemplácelo por este:
var fibonacciNumbers = new List<int> {1, 1};
Se crea una lista de enteros y se definen los dos primeros enteros con el valor 1. La secuencia Fibonacci, una secuencia de números, empieza con dos 1. Cada número sucesivo de Fibonacci se obtiene con la suma de los dos números anteriores. Agregue este código:
var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];
fibonacciNumbers.Add(previous + previous2);
foreach(var item in fibonacciNumbers)
{
Console.WriteLine(item);
}
Presione Ejecutar para ver los resultados.
Desafío
Trate de recopilar los conceptos que ha aprendido en esta lección y en las anteriores. Amplíe lo que ha creado hasta el momento con los números de Fibonacci. Pruebe y escriba el código para generar los veinte primeros números de la secuencia. (Como sugerencia, el 20º número de la serie de Fibonacci es 6765).
Desafío completo
¿Ha obtenido algo parecido a lo siguiente?
var fibonacciNumbers = new List<int> {1, 1};
while (fibonacciNumbers.Count < 20)
{
var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];
fibonacciNumbers.Add(previous + previous2);
}
foreach(var item in fibonacciNumbers)
{
Console.WriteLine(item);
}
Con cada iteración del bucle, se obtienen los dos últimos enteros de la lista, se suman y se agrega el valor resultante a la lista. El bucle se repite hasta que se hayan agregado veinte elementos a la lista.
¡Enhorabuena!
Ha completado el tutorial interactivo de la lista. Se trata de la introducción final al tutorial interactivo de C#. Puede visitar el sitio .NET para descargar el SDK de .NET, crear un proyecto en la máquina y continuar la codificación. La sección "Pasos siguientes" le lleva de vuelta a estos tutoriales.
Puede obtener más información sobre las colecciones de .NET en los siguientes artículos:
¿Tiene algún problema con esta sección? Si es así, envíenos sus comentarios para que podamos mejorarla.