c# - How to copy a range of ArrayList elements to an Array

Copy a range of elements from the ArrayList to an Array
The ArrayList class implements the IList interface using an array whose size is dynamically increased as required. It is designed to hold heterogeneous collections of objects. ArrayList is not guaranteed to be sorted. The capacity of an ArrayList is the number of elements the ArrayList can hold. As elements are added to an ArrayList, the capacity is automatically increased. ArrayList elements can be accessed by index and it is zero-based. The ArrayList accepts null as a valid value and also allows duplicate elements.

The following .net c# tutorial code demonstrates how we can copy an ArrayList specified elements (a range of elements) to an Array. Here we used the ArrayList class CopyTo() method to copy an ArrayList to an Array instance.

The ArrayList CopyTo() method copies the ArrayList or a portion of it to a one-dimensional array. The ArrayList CopyTo(Int32, Array, Int32, Int32) method overload copies a range of elements from the ArrayList to a compatible one-dimensional Array, starting at the specified index of the target array.

The ArrayList CopyTo(int index, Array array, int arrayIndex, int count) method overload’s index parameter is the zero-based index in the source ArrayList at which copying begins. The array parameter is the one-dimensional Array that is the destination of the elements copied from ArrayList. The Array must have zero-based indexing. The arrayIndex parameter is the zero-based index in the array at which copying begins. And the count parameter is the number of elements to copy.

The ArrayList CopyTo(int index, Array array, int arrayIndex, int count) method overload throws several exceptions such as it throws ArgumentNullException if the array is null. Throws ArgumentOutOfRangeExceptionif the index is less than zero or the arrayIndex is less than zero or the count is less than zero. It also throws InvalidCastException if the type of the source ArrayList cannot be cast automatically to the type of the destination array.

So finally, using the ArrayList CopyTo() method the .net developers can copy an ArrayList or a portion of it to a one-dimensional Array instance.
ArrayListCopyToMethodWithElementsRange.aspx

<%@ Page Language="C#" AutoEventWireup="true" %>

<!DOCTYPE html>

<script runat="server">
    protected void Button1_Click(object sender, System.EventArgs e)
    {
        ArrayList colors = new ArrayList() {"Red","DarkRed","IndianRed","MediumVioletRed"};

        Label1.Text = "ArrayList Elements....";
        foreach (string color in colors)
        {
            Label1.Text += "<br />" + color;
        }

        string[] colorArray = {"Olive","OliveDrab","SeaGreen","ForestGreen","MediumSeaGreen"};
        Label1.Text += "<font color=SeaGreen>";
        Label1.Text += "<br /><br />Array Elements...";
        foreach (string color in colorArray)
        {
            Label1.Text += "<br />" + color;
        }
        Label1.Text += "</font>";

        colors.CopyTo(1,colorArray,2,2);
        Label1.Text += "<font color=OrangeRed>";
        Label1.Text += "<br /><br />After Call CopyTo(Int32, Array, Int32, Int32) Method";
        Label1.Text += "<br />CopyTo(List Index 1, Array, arrayindex 2, count 2) Array Elements...";
        foreach (string color in colorArray)
        {
            Label1.Text += "<br />" + color;
        }
        Label1.Text += "</font>";
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>How to copy a range of elements from the ArrayList to a compatible Array, starting at the specified index of the array</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h2 style="color:MidnightBlue; font-style:italic;">
            System.Collections.ArrayList CopyTo(Int32, Array, Int32, Int32) Method
            <br /> How to copy ArrayList to a compatible
            <br /> Array, starting at the specified index of the array
        </h2>
        <hr width="525" align="left" color="Navy" />
        <br />
        <asp:Label
             ID="Label1"
             runat="server"
             ForeColor="Crimson"
             Font-Size="Large"
             Font-Names="Courier New"
             Font-Italic="true"
             Font-Bold="true"
             >
        </asp:Label>
        <br /><br />
        <asp:Button 
            ID="Button1"
            runat="server"
            OnClick="Button1_Click"
            Text="Test ArrayList CopyTo(Int32, Array, Int32, Int32) Method"
            Height="45"
            Font-Bold="true"
            ForeColor="DodgerBlue"
            />
    </div>
    </form>
</body>
</html>