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