DE CSharp Delegates Lambdas - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Delegierte, Lambdas und Schließungen

Handbuch C# · Beispiele UO

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.

Einfaches Beispiel (Example.cs)

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.

⚠️ **GitHub.com Fallback** ⚠️