C # 7 im Detail: Erkundung lokaler Funktionen

Die Unterstützung lokaler Funktionen ist eine hervorragende neue Funktion, die in C # 7 eingeführt wurde. Beachten Sie, dass Sie lokale Funktionen in jeder Methode, im Konstruktor einer Klasse oder in einer Eigenschaft definieren können - sowohl in Getter als auch in Setter. Wenn es vom C # -Compiler kompiliert wird, wird eine lokale Funktion in eine private Methode umgewandelt.

Bei der Entwicklung von Anwendungen müssen Sie möglicherweise häufig Methoden erstellen, die nicht wiederverwendet werden. Sie benötigen sie nur aus Gründen der Modularität. Möglicherweise möchten Sie nicht, dass Ihre Methoden lang sind, da die Aufrechterhaltung solcher Methoden im Laufe der Zeit zu einem Albtraum wird. Möglicherweise haben Sie jedoch viele private Methoden, die nicht wiederverwendet werden, oder? Diese neue Funktion in C # 7 hilft unter solchen Umständen - Sie können Funktionen definieren, die lokal für einen anderen Bereich sind, oder sie können sich innerhalb einer anderen Funktion oder sogar innerhalb einer Eigenschaft (sowohl Getter als auch Setter) befinden.

Stellen Sie sich eine Situation vor, in der Sie eine Hilfsfunktion benötigen, die nur einmal aufgerufen wird. Bevor es C # 7 gab, hätten Sie dies mit den Typen Func und Action mit anonymen Methoden erreichen können. Es gab jedoch einige Herausforderungen. Sie unterstützten keine Generika, Parameter und Ref- und Out-Parameter.

Mit C # 7 können Sie jetzt solche Funktionen in einem anderen Körper einer anderen Funktion deklarieren. Solche Funktionen sind als lokale Funktionen bekannt. Mit anderen Worten, die Unterstützung lokaler Funktionen ermöglicht es Ihnen, eine Funktion im Rahmen einer anderen Funktion zu definieren.

Implementierung lokaler Funktionen in C #

Schreiben wir einen Code und sehen, wie lokale Funktionen funktionieren. Betrachten Sie das folgende Code-Snippet. Beachten Sie, dass die Summenmethode im folgenden Codefragment im Hauptteil der Main-Methode definiert ist.

 static void Main(string[] args)

        {

            int Sum(int x, int y)

            {

                return x + y;

            }

            Console.WriteLine(Sum(10, 20));

            Console.ReadKey();

        }

In diesem Beispiel ist die Summenmethode eine lokale Funktion - sie ist lokal für die Hauptmethode. Mit anderen Worten, die Summenmethode kann nur innerhalb der Hauptmethode verwendet werden, dh innerhalb der Methode, in der sie definiert wurde.

Lokale Funktionen können alle Merkmale einer regulären Methode aufweisen, mit der Ausnahme, dass lokale Funktionen nicht statischer Natur sein können. Eine lokale Funktion kann sogar asynchron sein und auch über den umschließenden Block auf Variablen zugreifen. Parameter und lokale Variablen des umschließenden Bereichs können innerhalb einer lokalen Funktion verwendet werden, ähnlich wie Lambda-Ausdrücke. Es ist zu beachten, dass erfasste lokale Variablen als Referenz an eine lokale Funktion übergeben werden. Hier ist ein weiteres Beispiel, das zeigt, wie eine lokale Funktion auf die Variablen ihres umschließenden Typs zugreifen kann.

public static void Display(string str)

        {

            int ctr = 5;

            DisplayText();

            void DisplayText ()

            {

                for(int i = 0; i < ctr; i++)

                Console.WriteLine(str);

            }

        }

Beziehen Sie sich nun auf das oben angegebene Code-Snippet. Die Display-Methode enthält einen Zeichenfolgenparameter und eine Ganzzahlvariable. Beachten Sie, dass die in der Display-Methode definierte lokale Funktion (mit dem Namen DisplayText) Zugriff auf die lokalen Variablen und auch auf das Argument der Display-Methode haben kann. Nettes Feature, nicht wahr?

Einer der Hauptvorteile lokaler Funktionen ist die Kapselung - eine lokale Funktion kann nur von ihrem umschließenden Typ aufgerufen werden. Beachten Sie, dass jedes Mitglied der Klasse die private Methode aufrufen kann, wenn Ihre Klasse eine private Methode enthält.