Lista generica y diccionario - FernandoCalmet/csharp-essential GitHub Wiki
Una List<T> representa una colección de objetos fuertemente tipados a los que se puede acceder por índice.
Para crear una instancia List<T>, necesitamos proporcionar un tipo entre los corchetes angulares:
List<int> numberList = new List<int>();
List<Student> students = new List<Student>();Tiene dos constructores más que podemos usar para inicializar un objeto List. Con el primero, podemos configurar la capacidad inicial:
List<int> numbers = new List<int>(2);Con el segundo, podemos completar nuestra lista con la colección IEnumerable:
int[] nums = new int[5] { 1, 2, 3, 4, 5 };
List<int> numbers = new List<int>(nums);Para acceder a cualquier elemento podemos especificar su posición de índice:
int number = numbers[1];El método Add agrega el elemento dentro de una lista:
List<int> numbers = new List<int>();
numbers.Add(34);
numbers.Add(58);
numbers.Add(69);
foreach (int number in numbers)
{
Console.WriteLine(number);
}AddRange agrega los elementos de la colección especificada al final de una lista:
List<int> numbers = new List<int>();
numbers.Add(34);
numbers.Add(58);
numbers.Add(69);
int[] nums = new int[] { 1, 22, 44 };
numbers.AddRange(nums);
foreach (int number in numbers)
{
Console.WriteLine(number);
}Contains determina si un elemento existe en la lista:
if(numbers.Contains(34))
{
Console.WriteLine("The number 34 exists in a list");
}El método IndexOf devuelve la posición de un elemento como un número entero. Si no se pudo encontrar un elemento, este método devuelve -1:
int index;
if((index = numbers.IndexOf(58)) != -1)
{
Console.WriteLine($"The number 58 is on the index: {index}");
}LastIndexOf es similar a un método anterior, excepto que devuelve una última aparición del elemento.
El método CopyTo copia toda la colección en una matriz compatible, comenzando desde el principio de esa matriz:
int[] copyArray = new int[6];
numbers.CopyTo(copyArray);
foreach (int copyNumber in copyArray)
{
Console.WriteLine(copyNumber);
}El método Remove elimina la primera aparición de un elemento específico de la lista:
numbers.Remove(69);El método Clear borra todos los elementos de una lista:
numbers.Clear();Podemos verificar cuántos elementos tiene una lista usando la propiedad Count:
Console.WriteLine(numbers.Count);Dictionary representa una colección de claves y valores. Para instanciar un objeto podemos usar la siguiente sintaxis:
Dictionary<KeyType, ValueType> Name = new Dictionary<KeyType, ValueType>();KeyType representa un tipo de nuestra clave en una colección. ValueType representa el valor asignado a la clave. Entonces, podemos extraer nuestro valor de una colección usando la clave dentro de los corchetes:
DictionaryName[key];Dictionary tiene varios constructores que podemos usar para crear instancias de objetos:
Dictionary<string, int> dictExample = new Dictionary<string, int>();
Dictionary<string, int> dictExample1 = new Dictionary<string, int>(5); //to set initial size
Dictionary<string, int> dictExample2 = new Dictionary<string, int>(dictExample1); //accepts all the elements from created Key-Value collectionEl método Add agrega el par clave-valor dentro de una colección:
Dictionary<string, int> dictExample = new Dictionary<string, int>();
dictExample.Add("First", 100);
dictExample.Add("Second", 200);
dictExample.Add("Third", 300);
foreach (var item in dictExample)
{
Console.WriteLine(dictExample[item.Key]);
}Remove elimina el par clave-valor de una colección en función de la clave especificada:
dictExample.Remove("Second");
foreach (var item in dictExample)
{
Console.WriteLine(dictExample[item.Key]);
}ContainsKey determina si una colección contiene una clave específica.
ContainsValue determina si una colección contiene un valor específico:
if(dictExample.ContainsKey("First"))
{
Console.WriteLine("It contains key");
}
if(dictExample.ContainsValue(300))
{
Console.WriteLine("It contains value");
}El método Clear elimina todos los pares clave-valor de una colección:
dictExample.Clear();Si queremos contar todos nuestros elementos dentro de una colección, podemos usar la propiedad Count. Si queremos obtener una colección de contener Keys o contener Values de un diccionario, podemos usar las propiedades Keys y Values:
Console.WriteLine(dictExample.Count);
foreach (var key in dictExample.Keys)
{
Console.WriteLine(key);
}
foreach (var value in dictExample.Values)
{
Console.WriteLine(value);
}