Hi KALEEM,
Basic difference is that arrays are of fixed size. Whereas an ArrayList implements the list data structure and can dynamically grow. While arrays would be more performant than a list, a list would be far more flexible since you don't need to know the required size initially.
Prior to .NET 2.0 (before generics) ArrayLists were great for storing a list of objects. Now .NET has generics, it is generally much easier to just make a generic list to hold the objects you want.
An array list is basically the same thing as a generic list (of object)
So if you need a list to hold a specific type of object, generics is the way to go. If you need to store different types of objects in a list, an array list can still be useful.
//list that holds only string
List<string> MyList = new List<string>();
//list that holds any object type
List<object> MyList = new List<object>();
//list that holds any object type
ArrayList MyList = new ArrayList();
For more details refer the below article.