C# | Cómo convertir un ArrayList a Array

En C#, una array es un grupo de variables del mismo tipo a las que se hace referencia mediante un nombre común. Y cada elemento de datos se llama un elemento de la array. Los tipos de datos de los elementos pueden ser cualquier tipo de datos válido como char, int, float, etc. y los elementos se almacenan en una ubicación contigua.
ArrayList representa una colección ordenada de un objeto que se puede indexar individualmente. Es básicamente una alternativa a una array. Permite la asignación de memoria dinámica, agregando, buscando y ordenando elementos en la lista.
 

A continuación se muestran los dos métodos para convertir una ArrayList en una array:
Método 1: Convertir una ArrayList en una array de objeto 
Sintaxis:
 

public virtual object[] ToArray ();

Explicación:
 

  • Copia los elementos de ArrayList a una nueva array de objetos.
  • Devuelve una array de objetos que contiene copias de los elementos de ArrayList.

Ejemplo: en el siguiente programa, mylist es ArrayList y le agregamos 7 elementos que son el nombre de los días de la semana. Luego, estamos creando una array de objetos obj1 y usando el método ToArray con mylist, asignaremos los elementos de Arraylist a la array de objetos. Finalmente, usando el bucle foreach puede imprimir la array convertida requerida.
 

CSharp

// C# program to illustrate ToArray() Method
using System;
using System.Collections;
 
class GFG {
 
    // Main Method
    public static void Main()
    {
 
        // Create and initializing ArrayList
        ArrayList mylist = new ArrayList(7);
 
        mylist.Add("Monday");
        mylist.Add("Tuesday");
        mylist.Add("Wednesday");
        mylist.Add("Thursday");
        mylist.Add("Friday");
        mylist.Add("Saturday");
        mylist.Add("Sunday");
 
        // Copy the data of Arraylist into
        // the object Array Using ToArray()
        // method
        object[] obj1 = mylist.ToArray();
 
        foreach(string st in obj1)
        {
            Console.WriteLine(st);
        }
    }
}
Producción: 

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

 

Método 2: convertir una ArrayList en una array del tipo especificado 
Sintaxis:
 

public virtual Array ToArray (Type t);

Aquí, t es el tipo de elemento de la array de destino para crear y copiar elementos.
Explicación:
 

  • Copia los elementos de ArrayList a una nueva array del tipo de elemento especificado.
  • Devuelve una array del tipo de elemento especificado que contiene copias de los elementos de ArrayList.
  • Lanza ArgumentNullException si el valor de t es nulo.
  • Lanza InvalidCastException si el tipo de ArrayList de origen no se puede convertir automáticamente al tipo especificado.

Ejemplo 1:
 

CSharp

// C# program to illustrate the use
// of ToArray(Type) Method in the
// conversion of ArrayList to Array
using System;
using System.Collections;
 
class GFG {
 
    // Main Method
    public static void Main()
    {
 
        // Create and initialize new array
        ArrayList mylist = new ArrayList(5);
 
        mylist.Add("Ruby");
        mylist.Add("C#");
        mylist.Add("C++");
        mylist.Add("Java");
        mylist.Add("Perl");
 
        // Copy the data of Arraylist into
        // the string Array Using
        // ToArray(Type) method
        string[] str = (string[])mylist.ToArray(typeof(string));
 
        // Display the data of str string
        foreach(string j in str)
        {
            Console.WriteLine(j);
        }
    }
}
Producción: 

Ruby
C#
C++
Java
Perl

 

Explicación del código: Aquí estamos convirtiendo una ArrayList en una array del tipo especificado, es decir, tipo de string. Para la conversión, debe usar el método ToArray (Tipo) junto con la palabra clave typeof . Y luego tienes que convertirlo explícitamente al tipo especificado. Aquí puede ver la línea de código, string[] str = (string[])mylist.ToArray(typeof(string)); . (string[]) se usa para mylist para convertirlo en un tipo de array de strings. Hay otra alternativa para esta línea de código como se muestra en el siguiente ejemplo.
Ejemplo 2:
 

CSharp

// C# program to illustrate the use
// of ToArray(Type) Method in the
// conversion of ArrayList to Array
using System;
using System.Collections;
 
class GFG {
 
    // Main Method
    public static void Main()
    {
 
        // Create and initialize new array
        ArrayList mylist = new ArrayList(5);
 
        mylist.Add("Ruby");
        mylist.Add("C#");
        mylist.Add("C++");
        mylist.Add("Java");
        mylist.Add("Perl");
 
        // Copy the data of Arraylist into
        // the string Array Using
        // ToArray(Type) method
        // see this clearly as here we
        // are using as keyword
        string[] str = mylist.ToArray(typeof(string)) as string[];
 
        // Display the data of str string
        foreach(string j in str)
        {
            Console.WriteLine(j);
        }
    }
}
Producción: 

Ruby
C#
C++
Java
Perl

 

¿Qué sucederá si ArrayList no contiene todos los elementos del mismo tipo?

Si ArrayList no contiene los elementos del mismo tipo, entonces su conversión (ArrayList a Array) arrojará InvalidCastException .
Ejemplo:
 

CSharp

// C# program to illustrate the use
// of ToArray(Type) Method in the
// conversion of ArrayList to Array
using System;
using System.Collections;
  
class GFG {
  
    // Main Method
    public static void Main()
    {
  
        // Create and initialize new array
        ArrayList mylist = new ArrayList(5);
  
        mylist.Add("Ruby");
        mylist.Add(5);
        mylist.Add("C++");
        mylist.Add(7);
        mylist.Add("Perl");
  
        // It will throw the InvalidCastException
        // Copy the data of Arraylist into
        // the string Array Using
        // ToArray(Type) method
        string[] str = mylist.ToArray(typeof(string)) as string[];
  
        // Display the data of str string
        foreach(string j in str)
        {
            Console.WriteLine(j);
        }
    }
}

Error de tiempo de ejecución:
 

Excepción no controlada: 
System.InvalidCastException: la conversión especificada no es válida. 
 

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *