In C#, an ArrayList stores elements of multiple data types whose size can be changed dynamically. For example,
using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create an ArrayList
        ArrayList student = new ArrayList();
        // add elements to ArrayList
        student.Add("Jackson");
        student.Add(5);
        // display every element of myList 
        for (int i = 0; i < student.Count; i++)
        {
            Console.WriteLine(student[i]);
        }
    }
}
Output
Jackson 5
Here, student is an ArrayList that contains elements ("Jackson" and 5) of different data types.
We will learn about ArrayList in detail.
Create an ArrayList
To create ArrayList  in C#, we need to use the System.Collections namespace. Here is how we can create an arraylist in C#.
// create an arraylist
ArrayList myList = new ArrayList();
Here, we have created an arraylist named myList.
Basic Operations on ArrayList
In C#, we can perform different operations on arraylists. We will look at some commonly used arraylist operations in this tutorial:
- Add Elements
- Access Elements
- Change Elements
- Remove Elements
Let's see how we can perform these operations in detail!
Add Elements in ArrayList
C# provides a method Add() using which we can add elements in ArrayList. For example, 
using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create an ArrayList
        ArrayList student = new ArrayList();
        // add elements to ArrayList
        student.Add("Tina");
        student.Add(5);
    }
}
In the above example, we have created an ArrayList named student. 
Then we added "Tina" and 5 to the ArrayList using the Add() method.
Note: ArrayList stores elements with different data types. However, if you want to store elements of the same data type use List<T> class instead. 
Other way to add Elements to ArrayList
using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create an ArrayList using var  
        ArrayList myList = new ArrayList() { "Pizza", 24, "Pen" };
        // iterate through items
        for (int i = 0; i < myList.Count; i++)
        {
            Console.WriteLine(myList[i]);
        }
    }
}
Output
Pizza 24 Pen
In the above example, we have created an ArrayList named myList and assigned values at the same time using curly brackets. 
This is how we use object initializer syntax.
Note: Object Initializer allows us to assign values at the time of creating an object.
To add an element to a specified index in ArrayList, we use the Insert() method. For example,
using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create an ArrayList 
        ArrayList myList = new ArrayList();
        myList.Add("Jimmy");
        myList.Add("Blake");
        myList.Add("Taylor");
        Console.WriteLine("Before Inserting: " + myList[1]);
        // insert "Tim" at first index position 
        myList.Insert(1, "Tim");
        Console.WriteLine("After Inserting: " + myList[1]);
    }
}
Output
Before Inserting: Blake After Inserting: Tim
In the above example, we have inserted "Tim" at the second index position using the Insert() method.
Note: Remember Add() method adds an element at the end of the list and the Insert() method adds an element at a specified position.
Access ArrayList Elements
We use indexes to access elements in ArrayList. The indexing starts from 0. For example, 
using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create an ArrayList 
        ArrayList schoolDetails = new ArrayList();
        schoolDetails.Add("Mary's");
        schoolDetails.Add("France");
        schoolDetails.Add(23);
        // access the first element 
        Console.WriteLine("First element: " + schoolDetails[0]);
        // access the second element 
        Console.WriteLine("Second element: " + schoolDetails[1]);
    }
}
Output
First element: Mary's Second element: France
Since the index of the ArrayList starts from 0:
- schoolDetails[0]- accesses the first element
- schoolDetails[1]- accesses the second element
Iterate ArrayList
In C#, we can also loop through each element of ArrayList using a for loop. For example,
using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create an ArrayList containing 3 elements 
        ArrayList myList = new ArrayList();
        myList.Add("Science");
        myList.Add(true);
        myList.Add(5);
        // display every element of myList 
        for (int i = 0; i < myList.Count; i++)
        {
            Console.WriteLine(myList[i]);
        }
    }
}
Output
Science True 5
In the above example, we have looped through myList using a for loop. 
Here, myList.Count gives the number of elements in myList. 
Change ArrayList Elements
We can change the value of elements in ArrayList as: 
using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create an ArrayList 
        ArrayList myList = new ArrayList();
        myList.Add("Harry");
        myList.Add("Miller");
        Console.WriteLine("Original Second element: " + myList[1]);
        // change the value of second element 
        myList[1] = "Styles";
        Console.WriteLine("Updated second element: " + myList[1]);
    }
}
Output
Original Second element: Miller Updated second element: Styles
Here, we have changed the value of the second element in myList. 
Remove ArrayList Elements
C# provides methods like Remove(), RemoveAt(), RemoveRange() to remove elements from ArrayList. 
We will see an example below using Remove() to a remove element:  
using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create an ArrayList 
        ArrayList myList = new ArrayList();
        myList.Add("Jack");
        myList.Add(4);
        myList.Add("Jimmy");
        // remove "Jack" from myList
        myList.Remove("Jack");
        // iterate through myList after removing "Jack"
        for (int i = 0; i < myList.Count; i++)
        {
            Console.WriteLine(myList[i]);
        }
    }
}
Output
4 Jimmy
In the above example, we have removed "Jack" from myList using the Remove() method. 
Frequently Asked Questions
We can also create an ArrayList using var keyword. For example,
using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create an ArrayList using var  
        var person = new ArrayList();
        person.Add("Chris");
        person.Add(45);
        Console.WriteLine("Element at first index: " + person[1]);
    }
}
Output
Element at first index: 45
ArrayList?
C# provides a method Contains() using which we can determine whether an element is present inside ArrayList. For example,
using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create an ArrayList 
        var myList = new ArrayList() { "Delicate", "Willow", "Style", 3 };
        // check whether myList contains "Willow"  
        var result = myList.Contains("Willow");
        Console.WriteLine(result);
    }
}
Output
True
Here, myList contains "Willow" so myList.Contains("Willow") returns True.