Local Function in C# Last Updated : 18 Jan, 2022 Comments Improve Suggest changes Like Article Like Report 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 function using 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 present using 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 function using 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 function using 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 function using 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 Comment More infoAdvertise with us Next Article Local Function in C# ankita_saini Follow Improve Article Tags : C# CSharp-7.0 Similar Reads C# Tutorial C# (pronounced "C-sharp") is a modern, versatile, object-oriented programming language developed by Microsoft in 2000 that runs on the .NET Framework. Whether you're creating Windows applications, diving into Unity game development, or working on enterprise solutions, C# is one of the top choices fo 4 min read Introduction to .NET Framework The .NET Framework is a software development framework developed by Microsoft that provides a runtime environment and a set of libraries and tools for building and running applications on Windows operating systems. The .NET framework is primarily used on Windows, while .NET Core (which evolved into 6 min read C# Interview Questions and Answers C# is the most popular general-purpose programming language and was developed by Microsoft in 2000, renowned for its robustness, flexibility, and extensive application range. It is simple and has an object-oriented programming concept that can be used for creating different types of applications.Her 15+ min read C# Dictionary Dictionary in C# is a generic collection that stores key-value pairs. The working of Dictionary is quite similar to the non-generic hashtable. The advantage of a Dictionary is, that it is a generic type. A dictionary is defined under System.Collections.Generic namespace. It is dynamic in nature mean 5 min read C# List Class In C#, the List<T> class represents the list of objects that can be accessed by index. It comes under the System.Collections.Generic namespace. List class can be used to create a collection of different types like integers, strings, etc. List<T> class also provides the methods to search, 7 min read C# Delegates A delegate is an object which refers to a method or you can say it is a reference type variable that can hold a reference to the methods. It provides a way which tells which method is to be called when an event is triggered. For example, if you click on a Button on a form (Windows Form application), 6 min read ASP.NET Interview Questions and Answer ASP.NET is a popular framework by Microsoft for building fast and scalable web applications. It allows developers to create dynamic websites, services, and apps, using server-side code and offering a user-friendly experience. Trusted by companies like Microsoft, Dell, and Accenture, ASP.NET is used 15+ min read C# .NET Framework (Basic Architecture and Component Stack) C# (C-Sharp) is a modern, object-oriented programming language developed by Microsoft in 2000. It is a part of the .NET ecosystem and is widely used for building desktop, web, mobile, cloud, and enterprise applications. This is originally tied to the .NET Framework, C# has evolved to be the primary 6 min read C# Data Types Data types specify the type of data that a valid C# variable can hold. C# is a strongly typed programming language because in C# each type of data (such as integer, character, float, and so forth) is predefined as part of the programming language and all constants or variables defined for a given pr 7 min read C# Arrays An array is a group of like-typed variables that are referred to by a common name. And each data item is called an element of the array. The data types of the elements may be any valid data type like char, int, float, etc. and the elements are stored in a contiguous location. Length of the array spe 8 min read Like