Console.WriteLine(ArrayList) wrong output

Defi picture Defi · May 16, 2012 · Viewed 28.1k times · Source

I'm trying to print the content of the ArrayList of the various foreach loops but the only thing i get is the String + System.Collections.ArrayList.

For example the following code:

ArrayList nodeList = new ArrayList();
foreach (EA.Element element in elementsCol)
{
    if ((element.Type == "Class") || (element.Type == "Component") || (element.Type == "Package"))
    {
         nodeList.Add(element);
    }
    Console.WriteLine("The nodes of MDG are:" + nodeList); //stampato a schermo la lista dei nodi nel MDG finale

And the output that i get is:

The nodes of MDG are:System.Collections.ArrayList

Can please someone tell me why?

Answer

BrokenGlass picture BrokenGlass · May 16, 2012

The conversion to string for nodeList will just call nodeList.ToString() which produces the output you see. Instead you have to iterate over the array and print each individual item.

Alternatively you can use string.Join:

Console.WriteLine("The nodes of MDG are:" + string.Join(",", nodeList));

By the way there is no reason (or excuse) to still use ArrayList in C# 2 and above - if you are not maintaining legacy code switch to List<T>