Lokale functies declareren
Definieer hulpfuncties binnen methoden.
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.
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
- Lokale functies declareren
- Closures en vastgelegde variabelen
- Statische lokale functies
- Lokale functies versus lambdas