// ===++=== // // OrtizOL // // ===--=== /*============================================================ // // Clase: UsoMetodoCopyToArray.cs // // Propósito: Demostrar el uso de los métodos CopyTo de // ICollection, y ToArray de ArrayList. // ============================================================*/ using System; using System.Collections; namespace Recetas.Cap02 { internal class UsoMetodoCopyToArray { const double CONSTANTE_EULER = 0.577215664901; const double MEDIA_AUREAL = 1.618033988; const double PI = Math.PI; const double E = Math.E; const double RAIZ_DOS = 1.414213562; public static void Main() { // Creación de una variable ArrayList que contiene // constantes matemáticas. ArrayList constMatematicas = new ArrayList(5); constMatematicas.Add(CONSTANTE_EULER); constMatematicas.Add(MEDIA_AUREAL); constMatematicas.Add(PI); constMatematicas.Add(E); constMatematicas.Add(RAIZ_DOS); // Copiamos el contenido de constMatematicas a un arreglo // recién creado con la longitud de constMatematicas: double[] arregloConstantes = new double[constMatematicas.Count]; constMatematicas.CopyTo(arregloConstantes, 0); // Ahora usamos el método ToArray de ArrayList para obtener un // arreglo con objetos Object: object[] arregloObjetos = constMatematicas.ToArray(); // Ahora especificamos el tipo de destino de arreglo, usando la // versión sobrecargada de ToArray: public virtual Array ToArray(Type type): double[] constMatematicas2 = (double[]) constMatematicas.ToArray(typeof(double)); // Mostramos los resultados en la salida estándar: Console.WriteLine("Contenido del arreglo `constMatematicas`:"); foreach(double d in constMatematicas) { Console.WriteLine("\t{0}", d); } Console.WriteLine("\nContenido del arreglo de objectos Object `arregloObjetos`:"); for (int i = 0; i < arregloObjetos.Length; ++i) { Console.WriteLine("\t{0}", (double)arregloObjetos[i]); } Console.WriteLine("\nContenido del arreglo `constMatematicas2`:"); foreach(double d in constMatematicas2) { Console.WriteLine("\t{0}", d); } } } }