DE CSharp Delegates Lambdas - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Der Delegat speichert die aufgerufene Funktion einer bestimmten Signatur. Action gibt kein Ergebnis zurück, Func gibt eins zurück, Predicate<T> gibt bool zurück. Lambda wird als arguments => expression oder Block geschrieben. Die erfasste Variable gehört zum Abschluss, daher wirkt sich eine Änderung ihres Werts auf nachfolgende Aufrufe aus.
Speichern Sie dieses Beispiel separat als Example.cs. Führen Sie es unabhängig von den anderen Beispielen dieser Seite aus.
Example.cs:
// PROJECT-EXAMPLE
System.Func<int, int> twice = value => value * 2;
System.Console.WriteLine(twice(4));Ergebnis:
8
Func<int, int, int> add = (left, right) => left + right;
Action<string> report = text => UO.Print(text);
report($"Total={add(2, 3)}");int count = 0;
Action next = () => count++;
next();
next();
UO.Print($"Count={count}");Eine Methode kann als Methodengruppe übergeben werden, wenn ihre Signatur mit dem Delegaten übereinstimmt. static-lambda erfasst keinen lokalen Kontext. Verwenden Sie für ein von einer Aufgabe zurückgegebenes Lambda Func<Task> oder Func<T,Task> und warten Sie auf die Aufgabe. async void wird Ereignishandlern überlassen, die void benötigen.
Offizielle Dokumentation: Delegierte, Lambdas und Abschlüsse – Microsoft Learn.