First of all "params" parameter is
not an optional parameter, not even close. It is strictly mandatory, but the syntax of its use
only looks like optional.
This is nothing more than the
syntactic sugar for implicit creation of the array at the call:
ShowMethod(0, "1", "2");
is strictly equivalent to
ShowMethod(0, new string[] {"1", "2",});
And yet, you can write
ShowMethod(0);
which is the same as
ShowMethod(0, new string[0]);
Your problem could be explained by something simple: you are showing not exactly the same code you are using; you are mixing up something, something like that. If you disagree, please write a simple self-contained code sample manifesting the problem. First of all, it will help you to sort out things by yourself. If not, show this code in your question.
—SA