Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Array.Resize<T>(T[], Int32)

 

Cambia el número de elementos de una matriz unidimensional al nuevo tamaño especificado.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

public static void Resize<T>(
	ref T[] array,
	int newSize
)

Parámetros

array
Type: T[]

Matriz unidimensional de base cero a la que se va a cambiar el tamaño o null para crear una nueva matriz con el tamaño especificado.

newSize
Type: System.Int32

Tamaño de la nueva matriz.

Parámetros de tipo

T

Tipo de los elementos de la matriz.

Exception Condition
ArgumentOutOfRangeException

newSize es menor que cero.

Este método asigna una nueva matriz con el tamaño especificado, copia los elementos de la matriz anterior al nuevo y, a continuación, reemplaza la matriz antigua con uno nuevo. array debe ser una matriz unidimensional.

Si array es null, este método crea una nueva matriz con el tamaño especificado.

Si newSize es mayor que el Length de la matriz anterior, se asigna una nueva matriz y se copian todos los elementos de la matriz anterior al nuevo. Si newSize es menor que el Length de la matriz anterior, se asigna una nueva matriz y elementos se copian de la matriz anterior al nuevo hasta que se rellena una nueva; el resto de los elementos de la matriz anterior se omiten. Si newSize es igual a la Length de la matriz anterior, este método no hace nada.

Este método es una O (n) operación, donde n es newSize.

El Resize<T> método cambia el tamaño de una matriz unidimensional solo. La Array clase no incluye un método para cambiar el tamaño de las matrices multidimensionales. Para ello, debe proporcionar su propio código o llamar a un método especial en una biblioteca de terceros. El código siguiente muestra una posible implementación para un método que cambia el tamaño de una matriz de n dimensiones.

using System;

public class Example
{
   public static void Main()
   {
      int[,] arr = new int[10,2];
      for (int n1 = 0; n1 <= arr.GetUpperBound(0); n1++) {
         arr[n1, 0] = n1;
         arr[n1, 1] = n1 * 2;
      } 

      // Make a 2-D array larger in the first dimension.
      arr = (int[,]) ResizeArray(arr, new int[] { 12, 2} );
      for (int ctr = 0; ctr <= arr.GetUpperBound(0); ctr++) 
         Console.WriteLine("{0}: {1}, {2}", ctr, arr[ctr, 0], arr[ctr, 1]);
      Console.WriteLine();


      // Make a 2-D array smaller in the first dimension.
      arr = (int[,]) ResizeArray(arr, new int[] { 2, 2} );
      for (int ctr = 0; ctr <= arr.GetUpperBound(0); ctr++) 
         Console.WriteLine("{0}: {1}, {2}", ctr, arr[ctr, 0], arr[ctr, 1]);
   }

   private static Array ResizeArray(Array arr, int[] newSizes)
   {
      if (newSizes.Length != arr.Rank)
         throw new ArgumentException("arr must have the same number of dimensions " +
                                     "as there are elements in newSizes", "newSizes"); 

      var temp = Array.CreateInstance(arr.GetType().GetElementType(), newSizes);
      int length = arr.Length <= temp.Length ? arr.Length : temp.Length;
      Array.ConstrainedCopy(arr, 0, temp, 0, length);
      return temp;
   }   
}
// The example displays the following output:
//       0: 0, 0
//       1: 1, 2
//       2: 2, 4
//       3: 3, 6
//       4: 4, 8
//       5: 5, 10
//       6: 6, 12
//       7: 7, 14
//       8: 8, 16
//       9: 9, 18
//       10: 0, 0
//       11: 0, 0
//       
//       0: 0, 0
//       1: 1, 2

En el ejemplo siguiente se muestra cómo afecta el cambio de tamaño a la matriz.

using System;

public class SamplesArray  
{
    public static void Main()  {

        // Create and initialize a new string array.
        String[] myArr = {"The", "quick", "brown", "fox", "jumps", 
            "over", "the", "lazy", "dog"};

        // Display the values of the array.
        Console.WriteLine( 
            "The string array initially contains the following values:");
        PrintIndexAndValues(myArr);

        // Resize the array to a bigger size (five elements larger).
        Array.Resize(ref myArr, myArr.Length + 5);

        // Display the values of the array.
        Console.WriteLine("After resizing to a larger size, ");
        Console.WriteLine("the string array contains the following values:");
        PrintIndexAndValues(myArr);

        // Resize the array to a smaller size (four elements).
        Array.Resize(ref myArr, 4);

        // Display the values of the array.
        Console.WriteLine("After resizing to a smaller size, ");
        Console.WriteLine("the string array contains the following values:");
        PrintIndexAndValues(myArr);
    }

    public static void PrintIndexAndValues(String[] myArr)  {
        for(int i = 0; i < myArr.Length; i++)  
        {
            Console.WriteLine("   [{0}] : {1}", i, myArr[i]);
        }
        Console.WriteLine();
    }
}

/* 
This code produces the following output.

The string array initially contains the following values:
   [0] : The
   [1] : quick
   [2] : brown
   [3] : fox
   [4] : jumps
   [5] : over
   [6] : the
   [7] : lazy
   [8] : dog

After resizing to a larger size, 
the string array contains the following values:
   [0] : The
   [1] : quick
   [2] : brown
   [3] : fox
   [4] : jumps
   [5] : over
   [6] : the
   [7] : lazy
   [8] : dog
   [9] :
   [10] :
   [11] :
   [12] :
   [13] :

After resizing to a smaller size, 
the string array contains the following values:
   [0] : The
   [1] : quick
   [2] : brown
   [3] : fox

*/

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 2.0
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: