The List class, introduced in .NET 2.0, is the generic equivalent of the ArrayList class. Both are functionally very similar and will store a list of Objects, and thanks to polymorphism, anything that derives from the Object class. That is to say, any object at all.

So what’s the difference, and why would you use one in preference over the other? I think it’s a question of clarity and good programming style. If your intention is to store a list of Objects (or derivatives) then you can directly imply this by using a List<Object> type. If you want to store some other type then you would use the correct List type parameter instead of Object, right? Such as List<String> or List<XmlDocument>.

With ArrayLists there’s no way to make this distinction, which makes your code more vulnerable to misinterpretation.