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}.");}} |