Soms wil je een functie kunnen oproepen zonder telkens alle parameters mee te
geven. Veronderstel dat we in een programma vaak een getal vragen dat in de
meeste gevallen tussen 1 en 10 moet liggen, maar dat we het af en toe ook
tussen een andere ondergrens en bovengrens willen kunnen vragen.
Dat kan met optionele parameters: parameters waaraan je bij de definitie van de functie een standaardwaarde geeft. Geef je die parameter bij de oproep niet mee, dan gebruikt de functie automatisch de standaardwaarde.
We schrijven een functie InvoerGetal waarbij de ondergrens en de bovengrens
optioneel zijn. Standaard zijn ze 1 en 10:
int getal;
getal = InvoerGetal("Geef een getal tussen 1 en 10");
getal = InvoerGetal("Geef een getal tussen 100 en 200", 100, 200);
De functie zelf geeft de standaardwaarden mee in de parameterlijst, met een
=-teken:
int InvoerGetal(string vraag, int ondergrens = 1, int bovengrens = 10)
{
Console.WriteLine(vraag);
int getal = Convert.ToInt32(Console.ReadLine());
while (getal < ondergrens || getal > bovengrens)
{
getal = Convert.ToInt32(Console.ReadLine());
}
return getal;
}
In de eerste oproep geven we geen ondergrens en bovengrens mee. De functie
gebruikt dan haar standaardwaarden 1 en 10. In de tweede oproep geven we
100 en 200 mee: die overschrijven op het moment van de oproep de
standaardwaarden van de optionele parameters.
Bij de definitie van de functie plaats je naast elke optionele parameter zijn
standaardwaarde. Daarbij geldt één belangrijke regel: de verplichte
parameters (zonder standaardwaarde) moeten steeds vóór de optionele parameters
staan. In het voorbeeld hierboven is vraag verplicht en staat ze vooraan;
ondergrens en bovengrens zijn optioneel en komen daarna.
Een optionele parameter krijgt in de parameterlijst een standaardwaarde (
int ondergrens = 1). Bij de oproep mag je hem weglaten — dan geldt de standaardwaarde — of een eigen waarde meegeven die de standaardwaarde overschrijft. Verplichte parameters staan altijd vooraan.