i can't understand the difference between a simple bare
Public ClassName() {}
and
Public ClassName() : this(null) {}
I know I can use it only if i have a +1 overloaded ctor, but I can't understand the advantages of defining the parameterless constructor this way.
This permits the single-param constructor to have all the logic, so it isn't repeated.
public ClassName() : this(null) {}
public ClassName(string s)
{
// logic (code)
if (s != null) {
// more logic
}
// Even more logic
}
I hope it's clear that the "logic" and "even more logic" would have needed to be repeated in the parameterless constructor if not for the this(null).
One very useful case is situations like WinForms where the designer requires a prameterless constructor but you want your form to require a constructor.
public partial SomeForm : Form
{
private SomeForm() : this(null)
{
}
public SomeForm(SomeClass initData)
{
InitializeComponent();
//Do some work here that does not rely on initData.
if(initData != null)
{
//do somtehing with initData, this section would be skipped over by the winforms designer.
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With