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);
}
}
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);
}
}
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");
}
}
Geeks
gfg
GeeksforGeeks
123geeks
Similar Reads
Static Local Function in C# 8.0 Static local functions introduced in C# 8.0. It is a local function created using the static keyword. This is used to prevent variables to captured from the enclosing. If a method is marked as static then we cannot access variables from the enclosing method. It enhances the performance by reducing t
3 min read
Introduction to C# C# (C-sharp) is a modern, object-oriented programming language developed by Microsoft as part of the .NET framework. It was first released in 2000 and it has become one of the most widely used languages for building Windows applications, web services, and more. C# combines the power of C and C++ wit
7 min read
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
DateTime.ToLocalTime() Method in C# This method is used to convert the value of the current DateTime object to local time. Syntax: public DateTime ToLocalTime (); Return Value: This method returns an object whose Kind property is Local, and whose value is the local time equivalent to the value of the current DateTime object, or MaxVal
2 min read
DateTimeOffset.ToLocalTime() Method in C# DateTimeOffset.ToLocalTime Method is used to convert the current DateTimeOffset object to a DateTimeOffset object which represents the local time. Syntax: public DateTimeOffset ToLocalTime (); Return Value: This method returns an object that represents the date and time of the current DateTimeOffset
2 min read
C# | Dictionary.Item[] Property This property is used to get or set the value associated with the specified key in the Dictionary. Syntax: public TValue this[TKey key] { get; set; } Here, key is the Key of the value to get or set. Property Value: It is the value associated with the specified key. If the specified key is not found,
2 min read