c# - How to copy a Stack to an Array

Copy a Stack to an Array
The Stack class represents a simple last-in-first-out non-generic collection of objects. The Stack capacity is the number of elements it can hold. When elements are added to a Stack, its capacity is automatically increased as required through reallocation. The Stack accepts null as a valid value and allows duplicate elements.

The following .net c# tutorial code demonstrates how we can copy a Stack to an Array. That means we will copy a Stack instance to an Array, starting at the specified starting index of the Array instance. In this .net c# tutorial code, we used the Stack class CopyTo() method to copy Stack items to an Array object.

The Stack class CopyTo(Array, Int32) method copies the Stack to an existing one-dimensional Array, starting at the specified array index. The Stack class CopyTo(Array array, int index) method has two parameters. The array parameter is the one-dimensional Array that is the destination of the elements copied from the Stack. The Array must have zero-based indexing. And the index parameter is the zero-based index in the array at which copying begins.

The Stack class CopyTo(Array array, int index) method throws ArgumentNullException if the array is null. It throws ArgumentOutOfRangeException if the index is less than zero. It also throws InvalidCastException if the type of the source Stack cannot be cast automatically to the type of the destination array.
StackCopyToMethod.aspx

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

<!DOCTYPE html>
<script runat="server">
    protected void Button1_Click(object sender, System.EventArgs e)
    {
        Stack colors = new Stack();

        colors.Push("Red");
        colors.Push("DarkRed");
        colors.Push("IndianRed");
        colors.Push("MediumVioletRed");

        Label1.Text = "Stack Elements... ";
        Label1.Text += "<font color=SlateBlue>";
        foreach (string color in colors)
        {
            Label1.Text += "<br />" + color;
        }
        Label1.Text += "</font>";
        
        string[] redColors = new string[colors.Count];
        colors.CopyTo(redColors,0);

        Label1.Text += "<br /><br />After Call CopyTo(array, index 0) Method, Array Elements...";
        Label1.Text += "<font color=SlateBlue>";
        for(int i=0; i<redColors.Length; i++)
        {
            Label1.Text += "<br />" + redColors[i].ToString();
        }
        Label1.Text += "</font>";
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>How to copy Stack to an existing one-dimensional Array, starting at the specified array index</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h2 style="color:MidnightBlue; font-style:italic;">
            System.Collections.Stack CopyTo() Method
            <br /> How to copy the Stack to an existing
            <br /> one-dimensional Array, starting at the specified array index
        </h2>
        <hr width="575" align="left" color="Navy" />
        <br />
        <asp:Label
             ID="Label1"
             runat="server"
             ForeColor="MediumVioletRed"
             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 Stack CopyTo() Method"
            Height="45"
            Font-Bold="true"
            ForeColor="DodgerBlue"
            />
    </div>
    </form>
</body>
</html>
Related asp.net examples