En C# 7.0, se introducen funciones locales. La función local le permite declarar un método dentro del cuerpo de un método ya definido. O en otras palabras, podemos decir que una función local es una función privada de una función cuyo alcance se limita a esa función en la que se crea. El tipo de función local es similar al tipo de función en el que se define. Solo puede llamar a la función local desde sus miembros contenedores.
Ejemplo:
C#
// Simple C# program to // illustrate local function using System; class Program { // Main method public static void Main() { // Here SubValue is the local // function of the main function void SubValue(int a, int b) { Console.WriteLine("Value of a is: " + a); Console.WriteLine("Value of b is: " + b); Console.WriteLine("final result: {0}", a - b); Console.WriteLine(); } // Calling Local function SubValue(30, 10); SubValue(80, 60); } }
Producción:
Value of a is: 30 Value of b is: 10 final result: 20 Value of a is: 80 Value of b is: 60 final result: 20
Pero en C# 7.0 no puede usar modificadores estáticos con función local o, en otras palabras, no puede crear una función local estática. Esta función se agrega en C# 8.0. En C# 8.0, puede usar un modificador estático con la función local. Esto asegura que la función local estática no haga referencia a ninguna variable del ámbito envolvente o circundante. Si la función local estática intenta acceder a la variable desde el ámbito adjunto, el compilador arrojará un error. Discutamos este concepto con la ayuda de los ejemplos dados:
Ejemplo 1:
C#
// Simple C# program to illustrate // the static local function using System; class Program { // Main method public static void Main() { // Here AreaofCircle is the local // function of the main function void AreaofCircle(double a) { double ar; Console.WriteLine("Radius of the circle: " + a); ar = 3.14 * a * a; Console.WriteLine("Area of circle: " + ar); // Calling static local function circumference(a); // Circumference is the Static local function static void circumference(double radii) { double cr; cr = 2 * 3.14 * radii; Console.WriteLine("Circumference of the circle is: " + cr); } } // Calling function AreaofCircle(30); } }
Producción:
Radius of the circle: 30 Area of circle: 2826 Circumference of the circle is: 188.4
Ejemplo 2:
C#
// Simple C# program to illustrate // the static local function using System; class Program { // Main method public static void Main() { // Here AreaofCircle is the local // the function of the main function void AreaofCircle(double a) { double ar; Console.WriteLine("Radius of the circle: " + a); ar = 3.14 * a * a; Console.WriteLine("Area of circle: " + ar); // Circumference is the Static local function // If circumference() try to access the enclosing // scope variable, then the compile will give error static void circumference() { double cr; cr = 2 * 3.14 * a; Console.WriteLine("Circumference of the circle is: " + cr); } } // Calling function AreaofCircle(30); } }
Producción:
Error CS8421: A static local function cannot contain a reference to 'a'. (CS8421) (f)
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA