post icon

Redimensionar un Array en C#

Uno de los problemas (por decirlo un problema) en C# con los Array o Vectores, es que no se pueden redimensionar mediante un metodo del objeto, es por eso que debemos improvisar y crear nuestro propio metodo que se encargue de realizar esta tarea.

El código lo que hace en realidad es crear un nuevo Array, y volcar los valores del anterior Array al nuevo que tiene un tamaño mayor. Deben tener en cuenta que el código sólo sirve para expandir el tamaño, no para reducirlo.

1
2
3
4
5
6
7
8
public static System.Array RedimencionarArray(System.Array ArrayViejo, int TamanoNuevo) {
   int TamanoViejo= ArrayViejo.Length;
   System.Type tipoElemento= ArrayViejo.GetType().GetElementType();
   System.Array ArrayNuevo= System.Array.CreateInstance(tipoElemento,TamanoNuevo);
   int preserveLength = System.Math.Min(TamanoViejo,TamanoNuevo);
   if (preserveLength > 0)
      System.Array.Copy (ArrayViejo,ArrayNuevo,preserveLength);
   return ArrayNuevo; }

Con este código podemos ver el nuevo contenido

1
2
3
4
5
6
7
8
public static void Main () {
   int[] a = {1,2,3};
   a = (int[])RedimencionarArray(a,5);
   a[3] = 4;
   a[4] = 5;
   for (int i=0; i<a.Length; i++)
      System.Console.WriteLine (a[i]);
}
15 febrero 2010

Comentarios desde Facebook:

  1. avatar
    rodrigo ARGENTINA Internet Explorer Windows
    9 septiembre 2011 at 12:17 #

    me sirvio la funcion, gracias y saludos

Responder