English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Arreglo (Array) de C#

Las variables se utilizan para almacenar valores literales, mientras que los arrays se utilizan para almacenar múltiples valores literales.

Un array es una estructura de datos que almacena una cantidad fija de valores de texto (elementos) del mismo tipo de datos. Los elementos del array se almacenan de manera continua en la memoria.

En C#, los arrays pueden ser de tres tipos: array unidimensional, array multidimensional y array en forma de tijera. Aquí, aprenderá sobre el array unidimensional.

La siguiente imagen ilustra la forma de representación del array.

Representación de array

Declaración e inicialización de array

Se puede especificar el tipo de elemento del array utilizando corchetes cuadrados para declarar un array.

int[] evenNums;  // Array de enteros
string[] cities; // Array de cadenas

Las siguientes instrucciones declaran y agregan valores al array en una sola instrucción.

int[] evenNums = new int[5]{ 2, 4, 6, 8, 10 }; 
string[] cities = new string[3]{ "Mumbai", "London", "New York" };

En este caso, el array evenNums puede almacenar hasta cinco enteros. new int[5] el número dentro de los corchetes 5 Es el tamaño del array especificado. Del mismo modo, el tamaño del array cities es3Los elementos del array se agregan a una lista separada por comas dentro de los corchetes {}.

Las variables de tipo de array pueden declararse con var sin corchetes [].

var evenNums = new int[]{ 2, 4, 6, 8, 10}; 
var cities = new string[]{ "Mumbai", "London", "New York" };

Si se agregan elementos al array en la declaración, el tamaño es opcional. El compilador infiere el tamaño basado en el número de elementos entre los corchetes, como se muestra a continuación.

int[] evenNums = { 2, 4, 6, 8, 10}; 
string[] cities = { "Mumbai", "London", "New York" }

El siguiente ejemplo muestra la declaración de array inválida.

//Debe especificarse el tamaño 
int[] evenNums = new int[]; 
//El número de elementos debe igualar al tamaño especificado 
int[] evenNums = new int[5] { 2, 4 };
//No se puede usar var con inicialización de array
var evenNums = { 2, 4, 6, 8, 10};

Inicialización diferida

No es necesario declarar e inicializar el array en una sola instrucción. Puede declarar un array primero y luego inicializarlo con el operador new.

int[] evenNums;
evenNums = new int[5];
// o
evenNums = new int[]{ 2, 4, 6, 8, 10 };

Acceder a elementos de array

Se puede acceder a elementos de array usando índice. El índice es un número asociado a cada elemento del array, que comienza en 0 hasta el tamaño del array-1 Finalizar.

El siguiente ejemplo utiliza índice para agregar/Actualización y recuperación de elementos de array.

int[] evenNums = new int[5];
evenNums[0] =  2;
evenNums[1] =  4;
//evenNums[6] =  12;  //lanzar una excepción de tiempo de ejecución IndexOutOfRange
Console.WriteLine(evenNums[0]);  //Salida 2
Console.WriteLine(evenNums[1]);  //Salida 4

Tenga en cuenta que intentar agregar elementos que excedan su tamaño especificado lanzará la excepción IndexOutOfRangeException.

Usar bucle for para acceder al array

Usar bucle for para acceder a los elementos del array. En la expresión de condición del bucle for se utiliza la propiedad length del array.

int[] evenNums = { 2, 4, 6, 8, 10 };
for(int i = 0; i < evenNums.Length;++){
    Console.WriteLine(evenNums[i]);  
}
for(int i = 0; i < evenNums.Length;++){
    evenNums[i] = evenNums[i] + 10;  // Actualizar el valor de cada elemento10
}

Usar bucle foreach para acceder al array

Usar bucle foreach para leer el valor de los elementos del array sin usar índices.

int[] evenNums = { 2, 4, 6, 8, 10}; 
string[] cities = { "Mumbai", "London", "New York" }; 
foreach(var item in evenNums){
    Console.WriteLine(item);   
}
foreach(var city in cities){
    Console.WriteLine(city);
}

Métodos LINQ

Todos los arrays en C# derivan del tipo de clase abstracta System.Array.

La clase Array implementa la interfaz IEnumerable, por lo tanto, puedes usar métodos de extensión LINQ, como Max(), Min(), Sum(), reverse() y otros.

int[] nums = new int[5]{ 10, 15, 16, 8, 6 };
nums.Max(); // Retornar16
nums.Min(); // Retornar6
nums.Sum(); // Retornar55
nums.Average(); // Retornar55

La clase System.Array también incluye métodos para crear, operar, buscar y ordenar arrays.

int[] nums = new int[5]{ 10, 15, 16, 8, 6 };
Array.Sort(nums); // Ordenar el array 
Array.Reverse(nums); // Ordenar el array en orden descendente
Array.ForEach(nums, n => Console.WriteLine(n)); // Iterar el array
Array.BinarySearch(nums, 5);// Búsqueda binaria

Pasar un array como parámetro

Se puede pasar un array como parámetro a los parámetros del método. El array es de tipo de referencia, por lo tanto, este método puede cambiar el valor de los elementos del array.

public static void Main(){
    int[] nums = { 1, 2, 3, 4, 5 };
    UpdateArray(nums); 
    foreach(var item in nums)
        Console.WriteLine(item);   
}
                    
public static void UpdateArray(int[] arr)
{
    for(int i = 0; i < arr.Length; i++)
        arr[i] = arr[i] + 10;   
}

Siguiente, conozca Arreglo multidimensional y Arreglo dentado.