in C#, Programmazione

C# 8.0 – Static local functions

Reading Time: < 1 minute

Le Local functions sono state introdotte in C# a partire dalla versione 7. La possibilità di definire funzioni all’interno di altre funzioni, consente di catturarne il contesto e di accedere dal loro interno alle variabili definite all’interno del metodo che le contiene.

public void MethodWithLocalFunction(int input){
Console.WriteLine($"Inside MethodWithLocalFunction, input: {input}.");
LocalFunction();
void LocalFunction()
{
Console.WriteLine($"Inside LocalFunction, input: {input}.");
}
}

La novità introdotta in C# 8.0 riguarda la possibilità di definire local function static. Dichiarando una local function statica, si evita di utilizzare le variabili del metodo “contenitore” all’interno della della local function. Inoltre, a livello di prestazioni non sono presenti ulteriori costi di allocazione. Ovviamente, una variabile del metodo contenitore può comunque essere passata come parametro alla local function static:

public void MethodWithStaticLocalFunction(int input)
{
Console.WriteLine($"Inside MethodWithStaticLocalFunction, input: {input}.");
StaticLocalFunction(input);
static void StaticLocalFunction(int input)
{
Console.WriteLine($"Inside StatucLocalFunction, input: {input}.");
}
}