Heim > Backend-Entwicklung > C++ > Wie vereinfacht das Keyword von C# `rendite` die imperative Iteration?

Wie vereinfacht das Keyword von C# `rendite` die imperative Iteration?

Susan Sarandon
Freigeben: 2025-01-27 17:31:10
Original
348 Leute haben es durchsucht

How Does the C# `yield` Keyword Simplify Imperative Iteration?

Verständnis C#'s yield Schlüsselwort für eine effiziente Iteration

In C# 2.0 eingeführt wird das Schlüsselwort yield die imperative Iteration erheblich optimiert. Betrachten Sie dieses Beispiel und veranschaulichen die Verwendung beim Erstellen eines IEnumerable<T>:

IEnumerable<object> FilteredList()
{
    foreach(object item in FullList)
    {
        if(IsItemInPartialList(item))
            yield return item;
    }
}
Nach dem Login kopieren

Diese Funktion erstellt keine vollständige Liste im Speicher. Stattdessen gibt es einen Iterator zurück. Jedes Mal, wenn die foreach -Kleife in dem aufrufenden Code das nächste Element anfordert FilteredList() untersuchen wir ein einfacheres Beispiel: item

Debugugging dieses Code zeigt, dass

nicht vollständig ausführt. Es wird nur ausgeführt, bis es ein
public void Consumer()
{
    foreach(int i in Integers())
    {
        Console.WriteLine(i);
    }
}

public IEnumerable<int> Integers()
{
    yield return 1;
    yield return 2;
    yield return 4;
    yield return 8;
    yield return 16;
    yield return 16777216;
}
Nach dem Login kopieren
trifft und einen einzelnen Wert zurückgibt. Die nächste Iteration der

Schleife in Integers() verursacht yield return, um wieder aufzunehmen, und geht vom nächsten foreach. Consumer() fort Integers() Hauptvorteile der Verwendung yield return:

yield

vereinfachte Iteration:
    Vermeidet manuelle Implementierung von
  • und , was zu sauberer und prägnanterer Code führt. IEnumerable IEnumerator Speichereffizienz:
  • Werte werden auf Nachfrage generiert, wodurch die Speicherverwendung minimiert wird, besonders vorteilhaft im Umgang mit großen Datensätzen.
  • Verbesserte Lesbarkeit:
  • Die Absicht des Codes wird deutlicher, insbesondere beim Umgang mit iterativen Prozessen und Datenstreaming. Die Logik für die Erzeugung der Sequenz ist direkt in die Methode eingebettet.

Das obige ist der detaillierte Inhalt vonWie vereinfacht das Keyword von C# `rendite` die imperative Iteration?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage