C# Academy · Les

Lokale functies declareren

Definieer hulpfuncties binnen methoden.

Les 1 van 413 stappen

Lokale functies declareren is een gratis C# Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject C# Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus C# Academy bevat in totaal 4 lessen.

Wat is een lokale functie?

Een lokale functie is een methode die in een andere methode wordt gedeclareerd. Deze is alleen zichtbaar binnen het omringende lid, waardoor hulplogica dicht bij het gebruik ervan blijft en niet aan de klasse wordt toegevoegd.

Een lokale functie declareren

Schrijf de lokale functie net als een normale methode, genest in het methodeblok. Je kunt deze binnen hetzelfde bereik vóór of na de declaratie aanroepen.

using System;

public class Program
{
    public static void Main()
    {
        int Square(int n) => n * n;

        Console.WriteLine(Square(4));
        Console.WriteLine(Square(7));
    }
}

Lokale functies met een blokimplementatie

Lokale functies kunnen volledige blokimplementaties hebben met meerdere instructies, lussen en hun eigen lokale variabelen, net als elke methode.

using System;

public class Program
{
    public static void Main()
    {
        int Factorial(int n)
        {
            int result = 1;
            for (int i = 2; i <= n; i++) result *= i;
            return result;
        }

        Console.WriteLine(Factorial(5));
    }
}

Leesbaarheid verbeteren

Met lokale functies kun je een stuk logica een naam geven zonder de klasse te vervuilen met een private methode die maar door één methode wordt gebruikt. Zo blijft verwante code bij elkaar.

using System;

public class Program
{
    public static void Main()
    {
        string Format(string label, int value) => label + ": " + value;

        Console.WriteLine(Format("Score", 90));
        Console.WriteLine(Format("Level", 3));
    }
}

Recursie met lokale functies

Een lokale functie kan zichzelf aanroepen, waardoor je recursie eenvoudig kunt uitdrukken op de plek waar die nodig is.

using System;

public class Program
{
    public static void Main()
    {
        int Fib(int n) => n < 2 ? n : Fib(n - 1) + Fib(n - 2);

        for (int i = 0; i < 7; i++)
            Console.Write(Fib(i) + " ");
        Console.WriteLine();
    }
}

Lokale functies kunnen na gebruik worden gedeclareerd

In tegenstelling tot lokale variabelen kan naar een lokale functie eerder in de methode worden verwezen dan naar de plek waar deze wordt gedeclareerd. De compiler bepaalt het volledige omringende bereik.

using System;

public class Program
{
    public static void Main()
    {
        Console.WriteLine(Greet("Ada")); // used before declared

        string Greet(string name) => "Hello, " + name;
    }
}

Parameters en retourtypen

Lokale functies ondersteunen alles wat normale methoden ook ondersteunen: meerdere parameters, retourwaarden, ref- en out-parameters en generieke typen.

using System;

public class Program
{
    public static void Main()
    {
        bool TryHalve(int n, out int half)
        {
            half = n / 2;
            return n % 2 == 0;
        }

        if (TryHalve(10, out int result))
            Console.WriteLine("half is " + result);
    }
}

Generieke lokale functies

Een lokale functie kan generiek zijn en eigen typeparameters hebben, onafhankelijk van de omringende methode.

using System;

public class Program
{
    public static void Main()
    {
        T Echo<T>(T value)
        {
            Console.WriteLine("echoing " + value);
            return value;
        }

        int n = Echo(42);
        string s = Echo("hi");
        Console.WriteLine(n + " " + s);
    }
}

Lokale functies nesten

Lokale functies kunnen zelf lokale functies bevatten. De binnenste functies zijn alleen zichtbaar binnen hun ouderfunctie, zodat je hulpfuncties met een beperkt bereik kunt opbouwen.

using System;

public class Program
{
    public static void Main()
    {
        int Compute(int x)
        {
            int Double(int n) => n * 2;
            int AddOne(int n) => n + 1;
            return Double(AddOne(x));
        }

        Console.WriteLine(Compute(5));
    }
}

Argumenten valideren met lokale functies

Een veelgebruikt patroon: valideer argumenten direct en stel het echte werk daarna uit naar een lokale functie. Dit is vooral handig met iterators, zodat de validatie onmiddellijk wordt uitgevoerd.

using System;
using System.Collections.Generic;

public class Program
{
    static IEnumerable<int> Range(int start, int count)
    {
        if (count < 0) throw new ArgumentOutOfRangeException(nameof(count));
        return Iterate();

        IEnumerable<int> Iterate()
        {
            for (int i = 0; i < count; i++) yield return start + i;
        }
    }

    public static void Main()
    {
        foreach (var n in Range(10, 3)) Console.WriteLine(n);
    }
}

Wanneer lokale functies gebruiken

Kies een lokale functie wanneer een hulpfunctie door precies één methode wordt gebruikt, baat heeft bij een beschrijvende naam of toegang nodig heeft tot de lokale toestand van de methode. Zo blijft de klasse overzichtelijk en is de logica makkelijk te vinden.

using System;

public class Program
{
    public static void Main()
    {
        int total = 0;
        void Add(int n) => total += n; // helper tied to this method
        Add(3); Add(4); Add(5);
        Console.WriteLine(total);
    }
}

Snelle controle

Haal voor de geest wat een lokale functie is.

Samenvatting

Lokale functies zijn benoemde hulpfuncties die in een methode zijn genest.

  • Ze zijn alleen zichtbaar binnen hun omringende lid.
  • Ze ondersteunen parameters, retourwaarden, out/ref, generieke typen en recursie.
  • Er kan naar worden verwezen voordat ze zijn gedeclareerd.
  • Ze zijn uitstekend geschikt voor eenmalige hulpfuncties en directe argumentvalidatie in iterators.
Gratis beginnen

Leer C# met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
93
Lessen
346

Veelgestelde vragen

Is de les “Lokale functies declareren” gratis?

Ja — de volledige tekst van “Lokale functies declareren” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus C# Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus C# Academy bevat in totaal 4 lessen.

Wat leer ik in “Lokale functies declareren”?

Definieer hulpfuncties binnen methoden. Je oefent met C# Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met C# Academy te beginnen?

Ervaring vooraf is niet nodig. C# Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Lokale functies declareren”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over C# Academy?

Ja. Elke les over C# Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Lokale functies declareren
  2. Closures en vastgelegde variabelen
  3. Statische lokale functies
  4. Lokale functies versus lambdas
← Terug naar C# Academy