MatricesArrays

Una matriz es una estructura de datos que contiene un número de variables a las que se accede mediante índices calculados.An array is a data structure that contains a number of variables that are accessed through computed indices. Las variables contenidas en una matriz, denominadas también elementos de la matriz, son todas del mismo tipo y este tipo se conoce como tipo de elemento de la matriz.The variables contained in an array, also called the elements of the array, are all of the same type, and this type is called the element type of the array.

Los tipos de matriz son tipos de referencia, y la declaración de una variable de matriz simplemente establece un espacio reservado para una referencia a una instancia de matriz.Array types are reference types, and the declaration of an array variable simply sets aside space for a reference to an array instance. Las instancias de matriz reales se crean dinámicamente en tiempo de ejecución mediante el operador new.Actual array instances are created dynamically at runtime using the new operator. La nueva operación especifica la longitud de la nueva instancia de matriz, que luego se fija para la vigencia de la instancia.The new operation specifies the length of the new array instance, which is then fixed for the lifetime of the instance. Los índices de los elementos de una matriz van de 0 a Length - 1.The indices of the elements of an array range from 0 to Length - 1. El operador new inicializa automáticamente los elementos de una matriz a su valor predeterminado, que, por ejemplo, es cero para todos los tipos numéricos y null para todos los tipos de referencias.The new operator automatically initializes the elements of an array to their default value, which, for example, is zero for all numeric types and null for all reference types.

En el ejemplo siguiente se crea una matriz de elementos int, se inicializa la matriz y se imprime el contenido de la matriz.The following example creates an array of int elements, initializes the array, and prints out the contents of the array.

using System;
class ArrayExample
{
    static void Main() 
    {
        int[] a = new int[10];
        for (int i = 0; i < a.Length; i++) 
        {
            a[i] = i * i;
        }
        for (int i = 0; i < a.Length; i++) 
        {
            Console.WriteLine($"a[{i}] = {a[i]}");
        }
    }
}

Este ejemplo se crea y se pone en funcionamiento en una matriz unidimensional.This example creates and operates on a single-dimensional array. C# también admite matrices multidimensionales.C# also supports multi-dimensional arrays. El número de dimensiones de un tipo de matriz, conocido también como rango del tipo de matriz, es una más el número de comas escritas entre los corchetes del tipo de matriz.The number of dimensions of an array type, also known as the rank of the array type, is one plus the number of commas written between the square brackets of the array type. En el ejemplo siguiente se asignan una matriz unidimensional, multidimensional y tridimensional, respectivamente.The following example allocates a single-dimensional, a two-dimensional, and a three-dimensional array, respectively.

int[] a1 = new int[10];
int[,] a2 = new int[10, 5];
int[,,] a3 = new int[10, 5, 2];

La matriz a1 contiene 10 elementos, la matriz a2 50 (10 × 5) elementos y la matriz a3 100 (10 × 5 × 2) elementos.The a1 array contains 10 elements, the a2 array contains 50 (10 × 5) elements, and the a3 array contains 100 (10 × 5 × 2) elements. El tipo de elemento de una matriz puede ser cualquiera, incluido un tipo de matriz.The element type of an array can be any type, including an array type. Una matriz con elementos de un tipo de matriz a veces se conoce como matriz escalonada porque las longitudes de las matrices de elementos no tienen que ser iguales.An array with elements of an array type is sometimes called a jagged array because the lengths of the element arrays do not all have to be the same. En el ejemplo siguiente se asigna una matriz de matrices de int:The following example allocates an array of arrays of int:

int[][] a = new int[3][];
a[0] = new int[10];
a[1] = new int[5];
a[2] = new int[20];

La primera línea crea una matriz con tres elementos, cada uno de tipo int[] y cada uno con un valor inicial de null.The first line creates an array with three elements, each of type int[] and each with an initial value of null. Las líneas posteriores inicializan entonces los tres elementos con referencias a instancias de matriz individuales de longitud variable.The subsequent lines then initialize the three elements with references to individual array instances of varying lengths.

El nuevo operador permite especificar los valores iniciales de los elementos de matriz mediante un inicializador de matriz, que es una lista de las expresiones escritas entre los delimitadores { y }.The new operator permits the initial values of the array elements to be specified using an array initializer, which is a list of expressions written between the delimiters { and }. En el ejemplo siguiente se asigna e inicializa un tipo int[] con tres elementos.The following example allocates and initializes an int[] with three elements.

int[] a = new int[] {1, 2, 3};

Tenga en cuenta que la longitud de la matriz se deduce del número de expresiones entre { y }.Note that the length of the array is inferred from the number of expressions between { and }. Las declaraciones de variable local y campo se pueden acortar más para que así no sea necesario reformular el tipo de matriz.Local variable and field declarations can be shortened further such that the array type does not have to be restated.

int[] a = {1, 2, 3};

Los dos ejemplos anteriores son equivalentes a lo siguiente:Both of the previous examples are equivalent to the following:

int[] t = new int[3];
t[0] = 1;
t[1] = 2;
t[2] = 3;
int[] a = t;