C# | Copying the Hashtable elements to an Array Instance

Hashtable.CopyTo(Array, Int32) Method is used to copy the elements of a Hashtable to a one-dimensional Array instance at the specified index.

Syntax:

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

Parameters:



array : The one-dimensional Array that is the destination of the DictionaryEntry objects copied from Hashtable. The Array must have zero-based indexing.

index : The zero-based index in array at which copying begins.

Exceptions:

  • ArgumentNullException : If the array is null.
  • ArgumentOutOfRangeException : If the index is less than zero.
  • InvalidCastException : If the type of the source Hashtable cannot be cast automatically to the type of the destination array.
  • ArgumentException : If array is multidimensional OR the number of elements in the source Hashtable is greater than the available space from arrayIndex to the end of the destination array.

Below programs illustrate the use of Hashtable.CopyTo(Array, Int32) Method:

Example 1:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to copy the Hashtable
// elemets 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);
    }
}

chevron_right


Output:

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

Example 2:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to copy the Hashtable
// elemets 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);
    }
}

chevron_right


Runtime Error:

Unhandled Exception:
System.ArgumentOutOfRangeException: Non-negative number required.
Parameter name: arrayIndex

Note:

  • The elements are copied to the Array in the same order in which the enumerator iterates through the Hashtable.
  • To copy only the keys in the Hashtable, use Hashtable.Keys.CopyTo.
  • To copy only the values in the Hashtable, use Hashtable.Values.CopyTo.
  • This method is an O(n) operation, where n is Count.

Reference:



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.