Local Function in C# - GeeksforGeeks

18 Jan, 2022
The local function feature is introduced in C# 7.0. It allows you to declare a method inside the body of an already defined method. Or in other words, we can say that a local function is a private function of a function whose scope is limited to that function in which it is created. The type of local function is similar to the type of function in which it is defined. You can only call the local function from their container members.Important Points:  
Local functions are declared inside methods, constructors, property accessors, event accessors, anonymous methods, lambda expressions, finalizers, and other local functions.
You cannot declare a local function in the expression-bodied member.
Local function makes your program more readable and also save you from mistakenly call method because you cannot call a local function directly.
In local function, you are allowed to use async and unsafe modifiers.
Local function can access the local variables that are defined inside the container method including method parameters.
You are not allowed to use any member access modifiers in the local function definition, including private keyword because they are by default private and you are not allowed to make them public.
You are also not allowed to use static keyword with local function.
You are also not allowed to apply attributes to the local function, or to its parameters, or to its parameter type.
Multiple local functions are allowed.
Overloading is not allowed for local functions.
Example 1: 
CSharp
// C# program to illustrate local functionusing System; public class Program {     // Main method    public static void Main()    {        // Local Function        void AddValue(int a, int b)        {            Console.WriteLine("Value of a is: " + a);            Console.WriteLine("Value of b is: " + b);            Console.WriteLine("Sum of a and b is: {0}", a + b);            Console.WriteLine();        }         // Calling Local function        AddValue(20, 40);        AddValue(40, 60);    }}
Output:  
Value of a is: 20
Value of b is: 40
Sum of a and b is: 60

Value of a is: 40
Value of b is: 60
Sum of a and b is: 100
Example 2: 
CSharp
// C# program to illustrate local function// accessing the variable of the function// in which they presentusing System; public class Program {     // Main method    public static void Main()    {        // Variables of main method        int x = 40;        int y = 60;         // Local Function        void AddValue(int a, int b)        {            Console.WriteLine("Value of a is: " + a);            Console.WriteLine("Value of b is: " + b);            Console.WriteLine("Value of x is: " + x);            Console.WriteLine("Value of y is: " + y);            Console.WriteLine("Sum: {0}", a + b + x + y);            Console.WriteLine();        }         // Calling Local function        AddValue(50, 80);        AddValue(79, 70);    }}
Output: 
Value of a is: 50
Value of b is: 80
Value of x is: 40
Value of y is: 60
Sum: 230

Value of a is: 79
Value of b is: 70
Value of x is: 40
Value of y is: 60
Sum: 249
Advantages of local function:  
You are allowed to create local generic functions.Example: 
CSharp
// C# program to illustrate how to// create local generic functionusing System; public class Program {     // Main method    public static void Main()    {         // Local Generic Function        void MyMethod<MyValue>(MyValue value)        {            Console.WriteLine("Value is: " + value);        }         // Calling local generic function        MyMethod<int>(123);        MyMethod<string>("GeeksforGeeks");        MyMethod<char>('G');        MyMethod<double>(45453.5656);    }}
Output:  
Value is: 123
Value is: GeeksforGeeks
Value is: G
Value is: 45453.5656
 
You are allowed to pass out/ref parameters in local functions. Example: 
CSharp
// C# program to illustrate how can we// out parameter in local functionusing System; public class Program {     // Main method    public static void Main()    {         // Local Function with out parameter        void MyMethod(string str, out string s)        {            s = str + "for"                + "Geeks";        }        string a = null;         // Calling Local function        MyMethod("Geeks", out a);        Console.WriteLine(a);    }}
Output:  
GeeksforGeeks
 
You are allowed to use params in local functions.Example: 
CSharp
// C# program to illustrate how can we// pass params in local functionusing System; public class Program {     // Main method    public static void Main()    {         // Local Function        // Using params        void MyMethod(params string[] data)        {            for (int x = 0; x < data.Length; x++)            {                Console.WriteLine(data[x]);            }        }        // Calling Local function        MyMethod("Geeks", "gfg", "GeeksforGeeks", "123geeks");    }}
Output:  
Geeks
gfg
GeeksforGeeks
123geeks
 
 
muaaznaeem
sagar0719kumar
CSharp-7.0
C#
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
C# | Constructors
Introduction to .NET Framework
Difference between Ref and Out keywords in C#
C# | Class and Object
Top 50 C# Interview Questions & Answers
Basic CRUD (Create, Read, Update, Delete) in ASP.NET MVC Using C# and Entity Framework
C# | Encapsulation
Lambda Expressions in C#
HashSet in C# with Examples
C# | Replace() Method