C# | Copia de los elementos de la tabla hash en una instancia de array

El método Hashtable.CopyTo(Array, Int32) se utiliza para copiar los elementos de una tabla Hash en una instancia de array unidimensional en el índice especificado.
Sintaxis: 
 

public virtual void CopyTo (Array array, int arrayIndex);

Parámetros:
 

array: la array unidimensional que es el destino de los objetos DictionaryEntry copiados de Hashtable. El Array debe tener una indexación basada en cero.
índice: el índice basado en cero en la array en el que comienza la copia. 
 

Excepciones: 
 

  • ArgumentNullException: si la array es nula.
  • ArgumentOutOfRangeException: si el índice es menor que cero.
  • InvalidCastException: si el tipo de la tabla Hash de origen no se puede convertir automáticamente al tipo de la array de destino.
  • ArgumentException: si la array es multidimensional O el número de elementos en la tabla hash de origen es mayor que el espacio disponible desde arrayIndex hasta el final de la array de destino.

Los siguientes programas ilustran el uso del método Hashtable.CopyTo(Array, Int32) :
Ejemplo 1:
 

CSharp

// C# code to copy the Hashtable
// elements to a one-dimensional Array
// instance at the specified index.
using System;
using System.Collections;
 
class GFG {
 
    // Driver code
    public static void Main()
    {
 
        // Creating a Hashtable named myhash
        Hashtable myhash = new Hashtable();
 
        // Adding key/value pairs in myhash
        myhash.Add("A", "Apple");
        myhash.Add("B", "Banana");
        myhash.Add("C", "Cat");
        myhash.Add("D", "Dog");
        myhash.Add("E", "Elephant");
        myhash.Add("F", "Fish");
 
        // Creating a one-dimensional Array named myArr
        DictionaryEntry[] myArr = new DictionaryEntry[myhash.Count];
 
        // copying the Hashtable entries
        // to a one-dimensional Array instance
        // at the specified index
        myhash.CopyTo(myArr, 0);
 
        for (int i = 0; i < myArr.Length; i++)
            Console.WriteLine(myArr[i].Key + " --> "
                              + myArr[i].Value);
    }
}

Producción: 
 

B --> Banana
C --> Cat
A --> Apple
F --> Fish
D --> Dog
E --> Elephant

Ejemplo 2:
 

CSharp

// C# code to copy the Hashtable
// elements to a one-dimensional Array
// instance at the specified index.
using System;
using System.Collections;
 
class GFG {
 
    // Driver code
    public static void Main()
    {
 
        // Creating a Hashtable named myhash
        Hashtable myhash = new Hashtable();
 
        // Adding key/value pairs in myhash
        myhash.Add("A", "Apple");
        myhash.Add("B", "Banana");
        myhash.Add("C", "Cat");
        myhash.Add("D", "Dog");
        myhash.Add("E", "Elephant");
        myhash.Add("F", "Fish");
 
        // Creating a one-dimensional Array named myArr
        DictionaryEntry[] myArr = new DictionaryEntry[myhash.Count];
 
        // copying the HybridDictionary entries
        // to a one-dimensional Array instance
        // at the specified index
        // This should raise "ArgumentOutOfRangeException"
        // as index is less than 0
        myhash.CopyTo(myArr, -2);
 
        for (int i = 0; i < myArr.Length; i++)
            Console.WriteLine(myArr[i].Key + " --> "
                              + myArr[i].Value);
    }
}

Error de tiempo de ejecución:
 

Excepción no controlada: 
System.ArgumentOutOfRangeException: se requiere un número no negativo. 
Nombre del parámetro: arrayIndex 
 

Nota: 
 

  • Los elementos se copian en Array en el mismo orden en que el enumerador itera a través de Hashtable.
  • Para copiar solo las claves en Hashtable, use Hashtable.Keys.CopyTo .
  • Para copiar solo los valores en Hashtable, use Hashtable.Values.CopyTo .
  • Este método es una operación O(n), donde n es Count.

Referencia: 
 

Publicación traducida automáticamente

Artículo escrito por Kirti_Mangal 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 *