csharp / expert
Snippet
Zustandsbehaftete Iteratoren für verzögerte komplexe Logik
Das Schlüsselwort 'yield' transformiert eine Methode in einen Zustandsautomaten. Dies ermöglicht es, komplexen Kontrollfluss und Sequenzen verzögert zu generieren, was unnötige Speicherallokationen für große Datensätze verhindert.
snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
11
public static IEnumerable<long> FibonacciSequence(int limit) {long prev = 0, current = 1;for (int i = 0; i < limit; i++) {yield return prev;long next = prev + current;prev = current;current = next;}}// Usage: var data = FibonacciSequence(10).Where(n => n % 2 == 0);
Erklärung
1
yield return prev;
Unterbricht die Ausführung und gibt einen Wert an den Aufrufer zurück, wobei der lokale Zustand für die nächste Iteration erhalten bleibt.
2
IEnumerable<long>
Definiert den Rückgabetyp als eine verzögerte Sequenz, die nur ausgeführt wird, wenn darüber iteriert wird.