c# - How to clone a list

Clone a list
The List class represents a strongly typed list of objects. This class provides methods to search, sort, and manipulate lists. The List class is the generic equivalent of the ArrayList class. The list is not guaranteed to be sorted. Elements of a list can be accessed using an integer index and the indexes are zero-based. The list accepts null as a valid value for reference types and allows duplicate elements.

The following .net c# tutorial code demonstrates how we can clone a list instance. In this .net c# tutorial code, we used the List class specified constructor to create a clone of a list instance.

The List class List<T>(IEnumerable<T>) constructor initializes a new instance of the List class that contains elements copied from the specified collection and has sufficient capacity to accommodate the number of elements copied. So, using this constructor the .net c# developers can create a clone of a list object. The cloned list will be the same as the source list.

The List(System.Collections.Generic.IEnumerable<T> collection) constructor has a parameter named collection. The collection parameter is the collection whose elements are copied to the new list. So we will pass the source list as this parameter value to create a clone of it.

This list constructor throws ArgumentNullException if the collection is null which means if the source list is null. The elements are copied onto the cloned list in the same order they are read by the enumerator of the collection.
how-to-clone-a-generic-list.aspx

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

<!DOCTYPE html>
<script runat="server">
    protected void Button1_Click(object sender, System.EventArgs e)
    {
        List<string> colors = new List<string> { "red", "green", "blue", "yellow", "black" };

        Label1.Text = "Colors: ";
        foreach (string s in colors)
        {
            Label1.Text += s + " | ";
        }

        List<string> newcolors = new List<string>(colors);
        colors.Add("white");

        Label1.Text += "<br />Clone of Colors: ";
        foreach (string s in newcolors)
        {
            Label1.Text += s + " | ";
        }

        Label1.Text += "<br />Colors after Add: ";
        foreach (string s in colors)
        {
            Label1.Text += s + " | ";
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>c# example - how to clone a generic list</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h2 style="color:DarkBlue; font-style:italic;">
            c# example - how to clone a generic list
        </h2>
        <hr width="550" align="left" color="LightBlue" />  

        <asp:Label 
            ID="Label1" 
            runat="server"
            Font-Size="X-Large"
            >
        </asp:Label>
        <br /><br />
        <asp:Button 
            ID="Button1" 
            runat="server" 
            Text="clone a generic list"
            OnClick="Button1_Click"
            Height="40"
            Font-Bold="true"
            />
    </div>
    </form>
</body>
</html>