At least not from the reflection API's point of view.
For example, given the following class ...
public class Wig
{
public Wig(string name = "Angry")
{
// ...
}
}
... you can successfully instantiate the class as if it had a default, parameterless constructor:
var wig = new Wig();
However, trying to do this via Activator will fail:
var wig = Activator.CreateInstance<Wig>();
// MissingMethodException:
// No parameterless constructor defined for this object.
Which makes sense once you realize optional parameters are compiler sugar, and the following code will clearly show a single constructor requiring a single argument.
var ctors = typeof(Wig).GetConstructors();
foreach (var ctor in ctors)
{
Console.WriteLine(ctor.Name);
foreach(var param in ctor.GetParameters())
{
Console.WriteLine("\t{0} {1}",
param.Name,
param.ParameterType.Name );
}
}