Question: XsltArgumentList does not have a count() method. Is there any way to get that?

Also, it doesn't seem to support foreach construct to enumerate. 

Also, in Visual Studio 2010 Xslt debugger, how to use xslt arguments?

Answer: 
You can use reflection to get to the private field `parameters` that stores this data. This does mean your taking a dependency on an undocumented implementation detail so this may break at any time. 

If its just for debugging purposes I suppose its okay. It should be noted that its available to you via the the watch window and by typing `?xslArg.parameters` in the immediate window.

```
XsltArgumentList xslArg = new XsltArgumentList();

string name = "John";
xslArg.AddParam("name", "", name);

DateTime d = DateTime.Now;
xslArg.AddParam("date", "", d.ToString());

FieldInfo fi = xslArg.GetType().GetField("parameters", BindingFlags.NonPublic | 
                                                       BindingFlags.Instance);

System.Collections.Hashtable parameters = fi.GetValue(xslArg) as System.Collections.Hashtable;

if (parameters != null)
{
    foreach (System.Collections.DictionaryEntry item in parameters)
        Console.WriteLine("{0} | {1}", item.Key, item.Value);
}

```

Another alternative is to create a wrapper class. This class would contain the Add and Remove methods and exposes a parameter collection and a XsltArgumentList and is responsible for keeping the two in synch.
What exactly are you trying to do? Can we get more information? Usually you know the parameters you need to pass into the XSLT and generate an Argument List from there. You dont usually receive an argument list that you need to loop through.