Constructors, like methods, cannot have overloads with identical parameter lists. You can, however create a static factory method, like this:
public class Foo
{
public static Foo SpecialFoo() {
...
}
}
And call it like this:
var foo = new Foo();
var specialFoo = Foo.SpecialFoo();
An alternative is to use a separate constructor like this:
public class Foo
{
public Foo(bool special) : this() {
if (special)
{
...
}
}
}
And call it like this:
var foo = new Foo();
var specialFoo = new Foo(true);
Of course, this doesn't actually qualify as an 'alternate parameterless constructor' but it has some benefits over the static factory. Primarily, you can use and extend it in an inherited class, which is something that the factory method does not allow*.
* Actually, you can, but you need to hide the base factory method with new, or you will get a warning, and it's generally bad practice to hide static members on base classes.
var x = new Foo();