Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Mise à jour : novembre 2007
Utilisé dans un bloc itérateur pour fournir une valeur à l'objet énumérateur ou signaler la fin de l'itération. Elle prend l'une des formes suivantes :
yield return <expression>;
yield break;
Notes
L'expression est évaluée et retournée à l'objet énumérateur sous forme de valeur ; expression doit pouvoir être implicitement convertible vers le type yield de l'itérateur.
L'instruction yield ne peut apparaître qu'à l'intérieur d'un bloc iterator qui peut être utilisé comme corps d'une méthode, d'un opérateur ou d'un accesseur. Le corps de ces méthodes, opérateurs ou accesseurs est contrôlé par les restrictions suivantes :
Les blocs Unsafe ne sont pas autorisés.
Les paramètres de la méthode, de l'opérateur ou de l'accesseur ne peuvent pas être ref ou out.
Une instruction yield ne peut pas apparaître dans une méthode anonyme. Pour plus d'informations, consultez Méthodes anonymes (Guide de programmation C#).
Lorsqu'elle est utilisée avec expression, une instruction yield return ne peut pas apparaître dans un bloc catch ou dans un bloc try possédant une ou plusieurs clauses catch. Pour plus d'informations, consultez Instructions de gestion des exceptions (Référence C#).
Exemple
Dans l'exemple suivant, l'instruction yield est utilisée à l'intérieur d'un bloc itérateur, ce qui est la méthode Power(int number, int power). Lorsque la méthode Power est appelée, elle retourne un objet énumérable contenant les puissances d'un nombre. Remarquez que le type de retour de la méthode Power est IEnumerable, un type interface itérateur.
public class List
{
//using System.Collections;
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);
}
}
}
/*
Output:
2 4 8 16 32 64 128 256
*/
Spécification du langage C#
Pour plus d'informations, consultez les sections suivantes dans Spécifications du langage C#.
19.3 Itérateurs
22 Itérateurs
Voir aussi
Concepts
Référence
Utilisation d'itérateurs (Guide de programmation C#)