// ===++===
//
// 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);
}
}
}
}