C#7.0中引入了局部函数功能。它允许您在已定义方法的主体内部声明一个方法。或者换句话说,我们可以说,本地函数,其范围仅限于其所创建函数的函数的私有函数。局部函数的类型类似于定义它的函数的类型。您只能从其容器成员中调用本地函数。
重要事项:
- 局部函数在方法,构造函数,属性访问器,事件访问器,匿名方法,lambda表达式,终结器和其他局部函数内部声明。
- 您不能在表达式主体成员声明局部函数。
- 局部函数使您的程序更具可读性,还可以避免错误地调用方法,因为您不能直接调用局部函数。
- 在本地函数,允许您使用异步和不安全的修饰符。
- 局部函数可以访问在容器方法内部定义的局部变量,包括方法参数。
- 不允许在本地函数定义中使用任何成员访问修饰符,包括private关键字,因为默认情况下它们是私有的,并且不允许将它们公开。
- 也不允许您将static关键字与local函数一起使用。
- 也不允许您将属性应用于本地函数,其参数或参数类型。
- 允许多个本地功能。
- 本地功能不允许重载。
范例1:
// 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);
}
}
输出:
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
范例2:
// 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);
}
}
输出:
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
本地函数的优点:
- 您可以创建本地通用函数。
例子:
// 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 value) { Console.WriteLine("Value is: " + value); } // Calling local generic function MyMethod (123); MyMethod ("GeeksforGeeks"); MyMethod ('G'); MyMethod (45453.5656); } } 输出:
Value is: 123 Value is: GeeksforGeeks Value is: G Value is: 45453.5656
- 您可以在本地函数中传递/引用参数。
例子:
// C# program to illustrate how can we // out prarameter 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
- 您可以在局部函数中使用参数。
例子:
// 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