Sobes.tech
Junior — Middle

Worin besteht der Unterschied zwischen den Mechanismen yield und async/await bei der Arbeit mit Asynchronität in der Programmierung?

sobes.tech KI

Antwort von AI

yield und async/await sind verschiedene Mechanismen zur Arbeit mit Asynchronität und Datenströmen:

  • yield wird in Iteratoren und Generatoren verwendet, um Werte schrittweise auszugeben, ohne eine vollständige Liste sofort zu erstellen. Dies ermöglicht die Erstellung fauler Sequenzen.

  • async/await ist eine Syntax zur Vereinfachung der Arbeit mit asynchronen Operationen, die es ermöglicht, Code zu schreiben, der wie synchron aussieht, aber asynchron ausgeführt wird.

Beispiel für die Verwendung von yield in C#:

IEnumerable<int> GenerateNumbers() {
    for (int i = 0; i < 5; i++) {
        yield return i; // gibt bei jeder Iteration einen Wert zurück
    }
}

Beispiel für async/await:

async Task<string> GetDataAsync() {
    await Task.Delay(1000); // asynchrone Verzögerung
    return "Daten";
}

Daher steuert yield die sequenzielle Ausgabe von Daten, während async/await die asynchrone Ausführung von Operationen verwaltet.