As per Microsoft c# team:
Below code is just for reference that how we can create custom ArrayList. In the below example I have just increased 1 size at a time. But the default size is 10
class CArray
{
private int[] arr;
private int upper;
private int numElements;
public CArray(int size)
{
arr = new int[size];
upper = size - 1;
numElements = 0;
}
public void Insert(int item)
{
if(numElements == arr.Length) //reallocate size
{
IncreaseArraySize();
upper = arr.Length - 1;
}
arr[numElements] = item;
numElements++;
}
public void DisplayElements()
{
for (int i = 0; i <= upper; i++)
{
Console.Write(arr[i] + " ");
Console.WriteLine();
}
}
public void Clear()
{
for (int i = 0; i <= upper; i++)
{
arr[i] = 0;
numElements = 0;
}
}
public void IncreaseArraySize()
{
Array.Resize(ref arr, arr.Length + 1);
}
}
class Program
{
static void Main(string[] args)
{
CArray nums = new CArray(10);
Random rnd = new Random(100);
for (int i = 0; i < 10; i++)
{
nums.Insert((int)(rnd.NextDouble() * 100));
}
nums.Insert(203); //Dynamic size allocation here
nums.Insert(2);
nums.DisplayElements();
}
}
Note: This is not the exact implementation of ArrayList in C# , this is just a reference
Initial capacity of an ArrayList in .NET 1.0 is 16. In 2.0 it was 4, and now - with .NET 3.5 - the initial capacty has been lowered to 0. I don't have an explanation of why, thou. When adding a first element to the list, the capacity will be set to 4. There after, every time when arraylist.Count eq arraylist.Capacity, the capacity will double.
Below code is just for reference that how we can create custom ArrayList. In the below example I have just increased 1 size at a time. But the default size is 10
class CArray
{
private int[] arr;
private int upper;
private int numElements;
public CArray(int size)
{
arr = new int[size];
upper = size - 1;
numElements = 0;
}
public void Insert(int item)
{
if(numElements == arr.Length) //reallocate size
{
IncreaseArraySize();
upper = arr.Length - 1;
}
arr[numElements] = item;
numElements++;
}
public void DisplayElements()
{
for (int i = 0; i <= upper; i++)
{
Console.Write(arr[i] + " ");
Console.WriteLine();
}
}
public void Clear()
{
for (int i = 0; i <= upper; i++)
{
arr[i] = 0;
numElements = 0;
}
}
public void IncreaseArraySize()
{
Array.Resize(ref arr, arr.Length + 1);
}
}
class Program
{
static void Main(string[] args)
{
CArray nums = new CArray(10);
Random rnd = new Random(100);
for (int i = 0; i < 10; i++)
{
nums.Insert((int)(rnd.NextDouble() * 100));
}
nums.Insert(203); //Dynamic size allocation here
nums.Insert(2);
nums.DisplayElements();
}
}
Note: This is not the exact implementation of ArrayList in C# , this is just a reference