Я использую доходность и где-то попал, может кто-нибудь объяснить, как работает доход мой scenerio показан ниже.Как доходность работает в C#
public static IEnumerable Power(int number, int exponent)
{
int result = 1;
int counter = 0;
Console.WriteLine("Inside Power - Before While");
while (counter++ < exponent)
{
Console.WriteLine("Inside Power - Inside While");
result = result * number;
yield return result;
//Console.WriteLine("New line added");
}
Console.WriteLine("Inside Power - After While");
}
static void Main(string[] args)
{
foreach (int i in Power(2, 8))
{
Console.WriteLine("{0}", i);
}
}
Так на выходе мы получаем здесь
Inside Power - Before While
Inside power - Inside While
2
Inside power - Inside While
4
Inside power - Inside While
8
Inside power - Inside While
16
Inside power - Inside While
32
Inside power - Inside While
64
Inside power - Inside While
128
Inside power - Inside While
256
Inside power - AfterWhile
Так что мой вопрос, как указатель смещается от Еогеасп к перечислимых метода во время цикла и печатает и так далее. Почему весь метод не вызывается и только цикл цикла выполняется каждый раз.
Для подробного обсуждения этой темы прочитайте [это сообщение в блоге] (http://csharpindepth.com/Articles/Chapter6/IteratorBlockImplementation.aspx). –
Вы можете думать о выходе как о «продолжении». Когда вы даете значение, актер может получить значение, в следующий раз, когда вы запросите значение, он вернется туда, где он остановился в функции уступчивости, и продолжайте, как будто он никогда не покидал функцию. – devshorts
Thanx, я прочитал этот пост, но я хочу знать об этом выходе. Но спасибо за понимание внутреннего потока – user1006544