Le principe de base de
yield est utilisé dans le bloc itérateur pour fournir des valeurs à l'objet énumérateur ou signaler la fin de l'itération. Ses instructions ne peuvent apparaître que dans le bloc itérateur, qui peut être utilisé comme méthode. , opérateur ou Le corps de l'accesseur.
Le principe de base du rendement est le suivant :
est utilisé dans le bloc itérateur pour ajouter l'énumérateur object Fournit une valeur ou signale la fin de l'itération.
Il a l'une des formes suivantes :
Copier le codeyield return <expression>;yield break;
Remarques expression de calcul Et renvoyé sous la forme d'une valeur d'objet énumérateur
expression
doit être implicitement convertible en type de rendement de l'itérateur.
L'instruction rendement ne peut apparaître que dans un bloc itérateur, qui peut être utilisé comme corps d'une méthode, d'un opérateur ou d'un accesseur.
Le corps d'une telle méthode, opérateur ou accesseur est régi par les contraintes suivantes :
Les blocs non sécurisés ne sont pas autorisés.
Le paramètre d'une méthode, d'un opérateur ou d'un accesseur ne peut pas être ref
ou out
.
La déclaration de rendement ne peut pas apparaître dans les méthodes anonymes.
Lorsqu'elle est utilisée avec une expression, une instruction rendement return ne peut pas apparaître dans un bloc catch ou dans un bloc try contenant une ou plusieurs clauses catch. Exemple Dans l'exemple suivant, l'instruction rendement est utilisée dans un bloc itérateur (ici la méthode Power(int number, int power)). Lorsque la méthode Power est appelée, elle renvoie un objet énumérable contenant des nombres élevés en puissances.
Notez que le type de retour de la méthode Power est IEnumerable
(un type d'interface itérateur).
yield-example.csusing 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); } }}
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!