2 von 8 fanden dies hilfreich - Dieses Thema bewerten.

yield (C#-Referenz)

Wird in einem Iterator-Block verwendet, um für das Enumerationsobjekt einen Wert zu liefern oder um das Ende der Iteration zu signalisieren. Es nimmt eine der folgenden Formen an:

yield return <expression>;
yield break;

Der Ausdruck wird ausgewertet und als ein Wert an das Enumerationsobjekt zurückgegeben. Der expression muss implizit in den yield-Typ des Iterators konvertierbar sein.

Die yield-Anweisung kann nur innerhalb eines iterator-Blocks stehen, der als Rumpf einer Methode, eines Operators oder eines Accessors verwendet wird. Der Rumpf solcher Methoden, Operatoren oder Accessoren unterliegt folgenden Einschränkungen:

  • Unsichere Blöcke werden nicht zugelassen.

  • Parameter für die Methode, den Operator oder den Accessor dürfen nicht ref oder out sein.

Eine yield-Anweisung darf nicht in einer anonymen Methode stehen. Weitere Informationen finden Sie unter Anonyme Methoden (C#-Programmierhandbuch).

Bei Verwendung mit expression darf eine yield return-Anweisung nicht in einem catch-Block oder einem try-Block stehen, der mehr als eine catch-Klausel enthält. Weitere Informationen finden Sie unter Ausnahmebehandlungsanweisungen (C#-Referenz).

Das folgende Beispiel verwendet die yield-Anweisung innerhalb eines Iteratorblocks, nämlich der Power(int number, int power)-Methode. Wird die Power-Methode aufgerufen, gibt sie ein aufzählbares Objekt zurück, das die Potenzen einer Zahl enthält. Beachten Sie, dass der Rückgabetyp der Power-Methode IEnumerable, ein Iteratorschnittstellentyp, ist.

// yield-example.cs
using System;
using System.Collections;
public class List
{
    public static IEnumerable Power(int number, int exponent)
    {
        int counter = 0;
        int result = 1;
        while (counter++ < exponent)
        {
            result = result * number;
            yield return result;
        }
    }

    static void Main()
    {
        // Display powers of 2 up to the exponent 8:
        foreach (int i in Power(2, 8))
        {
            Console.Write("{0} ", i);
        }
    }
}

Ausgabe

2 4 8 16 32 64 128 256 

Weitere Informationen finden Sie in den folgenden Abschnitten von C#-Programmiersprachenspezifikation:

  • 19.3 Iteratoren

  • 22 Iteratoren

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)