I'm currently studying C# and I'm learning about constructors and the chain calling of constructors so as not to have to paste the same code (the same value for variables) in each constructor.
I have three constructors, one with no parameters, one with three parameters and one with four parameters. What I'm looking to do is, use the default constructor to call the constructor with three parameters, passing default values for the parameters (variables) and the constructor that has three parameters, I'm looking for that to call the constructor with four parameters. I seem to have the first one sorted listing the default values but I'm struggling how to write the constructor with three parameters and then get this to call the constructor with four parameters if required.
The default constructor should assign all instance variables of the type string to string.Empty.
public Address()
{
m_street = string.Empty;
m_city = string.Empty;
m_zipCode = string.Empty;
m_strErrMessage = string.Empty;
m_country = Countries;
}
public Address(string street, string city, string zip)
{
}
public Address(string street, string city, string zip, Countries country)
{
}
I was looking to do the following but it doesn't work:-
public Address(string street, string city, string zip)
: this street, string.Empty, city, string.Empty, zip, string.Empty
{
}
The idea would be to leave the logic of the instantiation to the constructor that takes in the most parameters and use the others as methods that only pass values to that constructor, that way you only write the code once.
Try this:
public Address()
: this(String.Empty, String.Empty, String.Empty)
{
}
public Address(string street, string city, string zip)
: this(street, city, zip, null)
{
}
public Address(string street, string city, string zip, Countries country)
{
m_street = street;
m_city = city;
m_zipCode = zip;
m_country = Countries;
m_strErrMessage = string.Empty;
}