Tutorial de C# ArrayList con ejemplos

⚡ Resumen inteligente

En C#, ArrayList es una colección dinámica del espacio de nombres System.Collections que almacena elementos como objetos. A diferencia de un array, crece y se reduce en tiempo de ejecución y puede contener enteros, cadenas y valores booleanos en una misma lista.

  • 🔄 Dimensionamiento dinámico: ArrayList agrega y elimina elementos en tiempo de ejecución, por lo que no es necesario fijar el número de elementos de antemano como en un array.
  • 📦 Almacenamiento de objetos: Cada elemento se almacena como un objeto, lo que permite que un ArrayList contenga tipos de datos mixtos como int, string y bool.
  • ➕ Métodos básicos: Las operaciones Add, Insert, Remove, RemoveAt, Contains y Sort cubren las operaciones cotidianas en un ArrayList.
  • 📊 Cantidad y capacidad: La propiedad Count devuelve el número actual de elementos, mientras que Capacity es el espacio de almacenamiento asignado.
  • ✅ Elección moderna: Microsoft Recomienda la lista genérica para el código nuevo porque añade seguridad de tipos en tiempo de compilación y evita el empaquetado.
  • 🤖 Asistencia de IA: GitHub Copilot genera código para ArrayList, y las canalizaciones de ML.NET pasan datos a través de tipos de colección de C#.

Lista de arreglos de C#

¿Qué es ArrayList en C#?

La colección ArrayList es similar a la Matrices tipo de datos en C#. La mayor diferencia es la naturaleza dinámica de la colección de listas de matrices.

Para las matrices, debe definir la cantidad de elementos que la matriz puede contener en el momento de la declaración de la matriz. Pero en el caso de la colección Array List, no es necesario hacer esto de antemano. Se pueden agregar o eliminar elementos de la colección Array List en cualquier momento. Veamos con más detalle las operaciones disponibles para la colección de listas de matrices.

Declaración de una lista de matrices

La declaración de una ArrayList se proporciona a continuación. Se crea una lista de matrices con la ayuda del tipo de datos ArrayList. La palabra clave "nueva" se utiliza para crear un objeto de ArrayList. Luego, el objeto se asigna a la variable a1. Entonces ahora la variable a1 se usará para acceder a los diferentes elementos de la lista del arreglo.

ArrayList a1 = new ArrayList()

Agregar elementos a una matriz

El método add se utiliza para agregar un elemento a ArrayList. El método add se puede utilizar para agregar cualquier tipo de elemento de tipo de datos a la lista de la matriz. Por lo tanto, puede agregar un número entero, una cadena o incluso un valor booleano a la lista de matrices. La sintaxis general del método de suma se proporciona a continuación.

ArrayList.add(element)

A continuación se muestran algunos ejemplos de cómo se puede utilizar el método "agregar". El método add se puede utilizar para agregar varios tipos de datos a la colección Array List.

A continuación puede ver ejemplos de cómo podemos agregar cadenas de números enteros e incluso valores booleanos a la colección Array List.

  • a1.add(1): esto agregará un valor entero a la colección
  • a1.add(“Ejemplo”): esto agregará un valor de cadena a la colección
  • a1.add(true): esto agregará un valor booleano a la colección.

Ahora veamos cómo funciona esto a nivel de código. Todo el código mencionado a continuación se escribirá en nuestra aplicación de consola. El código se escribirá en nuestro archivo Program.cs.

En el siguiente programa, escribiremos el código para crear una nueva lista de matrices. También mostraremos cómo agregar elementos y mostrar los elementos de la lista Array.

ArrayList en C #

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1[0]);	  
   Console.WriteLine(a1[1]);
   Console.WriteLine(a1[2]);
   Console.ReadKey();
  }
 }
}

Code Explicación:-

  1. El primer paso se utiliza para declarar nuestra Lista de matrices. Aquí declaramos a1 como una variable para contener los elementos de nuestra lista de matriz.
  2. Luego usamos la palabra clave add para agregar el número 1, la cadena "Ejemplo" y el valor booleano "verdadero" a la lista de la matriz.
  3. Luego usamos el método Console.WriteLine para mostrar el valor de cada elemento de la lista de matriz en la consola. Notarás que, al igual que las matrices, podemos acceder a los elementos a través de sus posiciones de índice. Entonces, para acceder a la primera posición de la Lista de matriz, usamos la posición de índice [0]. Y así sucesivamente y así sucesivamente.

Si el código anterior se ingresa correctamente y se ejecuta el programa, se mostrará el siguiente resultado.

Salida:

ArrayList en C #

En el resultado, puede ver que todos los elementos de la lista de matriz se envían a la consola.

Veamos algunos métodos más que están disponibles como parte de ArrayList.

Contar

Este método se utiliza para obtener la cantidad de elementos de la colección ArrayList. A continuación se muestra la sintaxis general de esta declaración.

ArrayList.Count(): este método devolverá el número de elementos que contiene la lista de matriz.

Contiene

Este método se utiliza para ver si un elemento está presente en la colección ArrayList. A continuación se muestra la sintaxis general de esta declaración.

ArrayList.Contains(elemento): este método devolverá verdadero si el elemento está presente en la lista; de lo contrario, devolverá falso.

Eliminar en

Este método se utiliza para eliminar un elemento en una posición específica en la colección ArrayList. A continuación se muestra la sintaxis general de esta declaración.

ArrayList.RemoveAt(index): este método eliminará un elemento de una posición específica de la lista de matriz.

Ahora veamos cómo funciona esto a nivel de código. Todo el código mencionado a continuación se escribirá en nuestra aplicación de consola. El código se escribirá en nuestro archivo Program.cs.

En el siguiente programa, escribiremos el código para ver cómo podemos utilizar los métodos mencionados anteriormente.

ArrayList en C #

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1.Count);
   Console.WriteLine(a1.Contains(2));
   Console.WriteLine(a1[1]);
   a1.RemoveAt(1);
   Console.WriteLine(a1[1]);
   Console.ReadKey();
  }
 }
}

Code Explicación:-

  1. Entonces, la primera propiedad que vemos es la propiedad Count. Obtenemos la propiedad Count de la lista de matriz a1 y luego la escribimos en la Consola.
  2. En la segunda parte, usamos el método Contiene para ver si ArrayList a1 contiene el elemento 2. Luego escribimos el resultado en la Consola mediante el comando Writeline.
  3. Finalmente, para mostrar el método Eliminar elemento, estamos realizando los pasos a continuación:
    1. Primero, escribimos el valor del elemento en la posición de índice 1 de la lista de matriz en la consola.
    2. Luego eliminamos el elemento en la posición de índice 1 de la lista de matriz.
    3. Finalmente, volvemos a escribir el valor del elemento en la posición de índice 1 de la lista de matriz en la consola. Este conjunto de pasos le dará una idea clara de si el método de eliminación funcionará como debería.

Si el código anterior se ingresa correctamente y se ejecuta el programa, se mostrará el siguiente resultado.

Salida:

ArrayList en C #

¿Por qué el último valor es verdadero?

Si ve la secuencia de eventos, el elemento Ejemplo se elimina de la matriz porque está en la posición 1. La posición 1 de la matriz luego se reemplaza por lo que estaba antes en la posición 2, cuyo valor es "verdadero".

Cómo recorrer un ArrayList en C#

Leer todos los elementos de un ArrayList es una tarea común. Dado que un ArrayList almacena sus elementos como objetos, se pueden recorrer con un bucle foreach o con un bucle for que utilice la propiedad Count. El bucle foreach es la forma más sencilla, ya que recorre cada elemento en orden sin necesidad de un índice.

El siguiente ejemplo crea un ArrayList de cadenas de texto e imprime cada valor en una línea independiente. El código está escrito en el archivo Program.cs de una aplicación de consola.

Paso 1) Importa el espacio de nombres System.Collections y crea un ArrayList con tres elementos.

Paso 2) Utiliza un bucle foreach para leer cada elemento como un objeto y escribirlo en la consola.

using System;
using System.Collections;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add("Java");
   a1.Add("Python");
   a1.Add("Kotlin");
   foreach (object item in a1)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

Code Explicación:-

  1. Se importa el espacio de nombres System.Collections para que el tipo ArrayList esté disponible para el programa.
  2. Se añaden tres valores de cadena al ArrayList mediante el método Add.
  3. El bucle foreach lee cada elemento como un objeto, y el método Console.WriteLine lo imprime en una nueva línea.

Cuando se ejecuta el programa, imprime Java, Python, y Kotlin en líneas separadas. Un bucle for con la propiedad Count daría el mismo resultado, permitiendo además usar la posición del índice de cada elemento.

Métodos y propiedades de ArrayList en C#

La clase ArrayList ofrece numerosos métodos y propiedades integrados para gestionar sus elementos. Además de añadir y eliminar elementos, permite ordenar, buscar e invertir la colección. A continuación se enumeran los miembros más comunes.

Miembro Mareas Ideales para Lecciones
Agregar Agrega un único elemento al final del ArrayList.
recuadro Agrega un elemento en una posición de índice específica.
Eliminar Elimina la primera aparición de un elemento específico.
Eliminar en Elimina el elemento en la posición de índice especificada.
Limpiar firma Elimina todos los elementos del ArrayList.
Ordenar Ordena los elementos en orden ascendente.
Reverse Reversees el orden de los elementos en la lista.
Contiene Devuelve verdadero si un elemento dado existe en la lista.
Índice de Devuelve la posición del índice de un elemento dado.
Contar Propiedad que devuelve el número de elementos almacenados.
CAPACIDAD Propiedad que devuelve el número de elementos que puede contener la lista.

Estos miembros te permiten agregar, buscar, ordenar y eliminar elementos sin tener que escribir tú mismo la lógica, lo cual es una de las principales ventajas de usar una colección en lugar de una matriz simple.

Diferencia entre ArrayList y List en C#

Tanto un ArrayList como un genérico Lista Almacenan un grupo de elementos que pueden crecer durante la ejecución, pero difieren en cómo manejan los tipos. Conocer esta diferencia te ayudará a elegir la opción adecuada para el código C# moderno.

Las principales diferencias se enumeran a continuación:

  • Seguridad de tipos: Un ArrayList almacena cada elemento como un objeto, mientras que una List está vinculada a un tipo declarado y se verifica en tiempo de compilación.
  • Actuación: Un ArrayList empaqueta y desempaqueta tipos de valor como int, lo que consume tiempo, mientras que una List evita el empaquetado para una mayor velocidad.
  • Espacio de nombres: ArrayList reside en System.Collections, mientras que List reside en System.Collections.Generic.
  • de calidad: Para leer un ArrayList, a menudo es necesario convertirlo de nuevo al tipo original, pero una List devuelve el tipo correcto directamente.
  • Recomendación: Microsoft Recomienda List para nuevos desarrollos porque es más seguro, rápido y fácil de leer.

En resumen, un ArrayList es útil para comprender código antiguo o almacenamiento de tipos mixtos, mientras que una List es la opción preferida para la mayoría de las aplicaciones actuales.

Preguntas Frecuentes

Un array tiene un tamaño fijo y almacena un único tipo de dato definido en su declaración. Un ArrayList crece y se reduce en tiempo de ejecución y almacena cada elemento como un objeto, por lo que puede contener diferentes tipos de datos en una sola lista.

ArrayList no se elimina, pero Microsoft No se recomienda para nuevos desarrollos. Se prefiere la clase genérica List en System.Collections.Generic porque ofrece seguridad de tipos y mejor rendimiento, por lo que la mayoría del código C# moderno utiliza List en su lugar.

Dado que un ArrayList almacena los elementos como objetos, agregar un tipo de valor como int lo encapsula en un objeto, lo que se conoce como empaquetado. Leerlo de nuevo y convertirlo al tipo original se conoce como desempaquetado. Ambos pasos afectan al rendimiento, algo que List evita.

Un ArrayList admite varios lectores a la vez, pero no se garantiza que los miembros de instancia sean seguros para subprocesos cuando se modifica la colección. Para escrituras seguras en subprocesos múltiples, envuélvalo con un ArrayList.SyncUtilice un método cronizado o una colección concurrente en su lugar.

Count es la cantidad de elementos almacenados actualmente en el ArrayList. Capacity es la cantidad total de elementos que puede contener antes de redimensionarse. Capacity siempre es igual o mayor que Count y aumenta automáticamente a medida que se agregan elementos.

Puedes copiar los elementos en una lista fuertemente tipada con los métodos Cast y ToList, o llamar al método ToArray para obtener una matriz de objetos. Convertir a una lista genérica es habitual porque restablece la seguridad de tipos.

Sí. GitHub Copilot puede escribir declaraciones de ArrayList, agregar y eliminar llamadas y bucles a partir de un comentario breve o el nombre de un método. A menudo también sugiere la versión genérica List, ya que es la colección recomendada para el código C# nuevo.

ML.NET suele leer los datos de entrenamiento a través de colecciones genéricas como List e IEnumerable, que se corresponden con su canalización IDataView. Rara vez se utiliza directamente un ArrayList no genérico, ya que una colección fuertemente tipada mantiene los datos de aprendizaje automático claros y con tipos seguros.

Resumir este post con: