C# | Copie StringDictionary a Array en el índice especificado – Part 1

El método StringDictionary.CopyTo(Array, Int32) se usa para copiar los valores del diccionario de strings en una instancia de Array unidimensional en el índice especificado.

Sintaxis:

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

Parámetros:

  • array: Es el Array unidimensional que es el destino de los valores copiados del StringDictionary.
  • índice: Es el índice en la array donde comienza la copia.

Excepciones:

  • ArgumentNullException: si la clave es nula.
  • ArgumentOutOfRangeException: si el índice es menor que el límite inferior de la array.
  • ArgumentException: si la array es multidimensional o la cantidad de elementos en StringDictionary es mayor que el espacio disponible desde el índice hasta el final de la array.

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

Ejemplo 1:

// C# code to copy StringDictionary
// to Array at the specified index
using System;
using System.Collections;
using System.Collections.Specialized;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating a StringDictionary named myDict
        StringDictionary myDict = new StringDictionary();
  
        // Adding key and value into the StringDictionary
        myDict.Add("A", "Apple");
        myDict.Add("B", "Banana");
        myDict.Add("C", "Cat");
        myDict.Add("D", "Dog");
        myDict.Add("E", "Elephant");
  
        // Creating an Array named myArr
        DictionaryEntry[] myArr = { new DictionaryEntry(),
                                    new DictionaryEntry(),
                                    new DictionaryEntry(),
                                    new DictionaryEntry(),
                                    new DictionaryEntry() };
  
        // Copying StringDictionary to
        // Array at the specified index
        myDict.CopyTo(myArr, 0);
  
        // Displaying key and value pairs in Array myArr
        for (int i = 0; i < myArr.Length; i++) {
            Console.WriteLine(myArr[i].Key + " " + myArr[i].Value);
        }
    }
}

Producción:

d Dog
b Banana
c Cat
e Elephant
a Apple

Ejemplo 2:

// C# code to copy StringDictionary
// to Array at the specified index
using System;
using System.Collections;
using System.Collections.Specialized;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating a StringDictionary named myDict
        StringDictionary myDict = new StringDictionary();
  
        // Adding key and value into the StringDictionary
        myDict.Add("A", "Apple");
        myDict.Add("B", "Banana");
        myDict.Add("C", "Cat");
        myDict.Add("D", "Dog");
        myDict.Add("E", "Elephant");
  
        // Creating an Array named myArr
        DictionaryEntry[] myArr = { new DictionaryEntry(),
                                    new DictionaryEntry(),
                                    new DictionaryEntry() };
  
        // Copying StringDictionary to
        // Array at the specified index
        // This should raise "ArgumentException" as
        // the number of elements in the StringDictionary
        // is greater than the available space from
        // index to the end of array.
        myDict.CopyTo(myArr, 0);
  
        // Displaying key and value pairs in Array myArr
        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.ArgumentException: la array de destino no es lo suficientemente larga para copiar todos los elementos de la colección. Compruebe el índice y la longitud de la array.

Nota:

  • Los elementos copiados en Array se clasifican en el mismo orden en que el enumerador itera a través de StringDictionary.
  • Este método es una operación O(n), donde n es Count.

Referencia:

Publicación traducida automáticamente

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