Drop hier links of afbeeldingen om ze aan de editor toe te voegen.

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.

Een voorbeeld

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.

De regel: verplichte parameters eerst

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.