In het .NET Framework worden vaak kreten gebruikt waarbij een ontwikkelaar zich helemaal niets meer kan voorstellen. Twice docent Patrick Schmidt licht een aantal begrippen toe in een serie van vier artikelen.
Taalvernieuwingen in het .NET Framework 4.0. - deel III Optionele en Named parameters
Deel 3 uit een serie artikelen van Patrick Schmidt, docent en consultant bij Twice IT Training
Een van de aardige aspekten van een taal als C++ is dat je parameters optioneel kunt maken dwz, de parameters krijgen een default waarde. Het grote voordeel hiervan is dat je een oerwoud aan overloads kunt vermijden. Helaas was deze taaleigenschap in het .NET Framework niet aanwezig waardoor de code er als volgt uit kon gaan zien.
class Persoon
{
public string Achternaam { get; set; }
public string Voornaam { get; set; }
public int Leeftijd { get; set; }
public Persoon(string achternaam, string voornaam, int leeftijd)
{
Achternaam = achternaam;
Voornaam = voornaam;
Leeftijd = leeftijd;
}
public Persoon( string achternaam, string voornaam) : this(voornaam, achternaam, 0)
{}
public Persoon(string achternaam) : this("Nn", achternaam, 0)
{}
}
In dit codefragment zien we een constructor met een tweetal overloads. Dit is gedaan om de class Persoon op verschillende manieren te kunnen initialiseren. Wanneer we deze class zouden uitbreiden met adresgegevens zal het aantal overloads zeer waarschijnlijk gaan toenemen en krijgen we het eerder besproken oerwoud.
Vanaf het .NET Framework 4.0 worden de optionele parameters nu ook ondersteund. Het vorige voorbeeld zou er dan als volgt uit gaan zien:
class Persoon
{
public string Achternaam { get; set; }
public string Voornaam { get; set; }
public int Leeftijd { get; set; }
public Persoon(string achternaam, string voornaam = "Nn", int leeftijd = 0)
{
Achternaam = achternaam;
Voornaam = voornaam;
Leeftijd = leeftijd;
}
}
De class Persoon kan nu met één constructor op drie verschillende manieren worden geinitialiseerd:
Persoon p1 = new Persoon("Janssen");
Persoon p2 = new Persoon("Janssen", "Karel");
Persoon p3 = new Persoon("Janssen", "Karel", 56);
Naast deze optionele parameters krijgen we ook de vrijheid om zelf de volgorde te bepalen waarin we de parameters bij initialisate opgeven, dus eerst de voornaam, dan de achternaam en tenslotte de leeftijd. Aangezien de compiler nu in de war kan gaan raken, moeten we wel aangeven welke parameter we bedoelen. Dit doen we door de naam van de parameter expliciet te vermelden
De initialisatie van de class Persoon kan er dan als volgt uit gaan zien:
Persoon p1 = new Persoon(voornaam:"Jan", achternaam:"Peters");
Omdat we de naam van de parameters nu expliciet vermeld hebben, spreken we nu van Named parameters.
Terug naar het overzicht met alle artikelen over Taalvernieuwingen in het .NET Framework 4.0