using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication10
{
class Program
{
static void Main(string[] args)
{
foreach(int i in Power(2,8,""))
Console.Write("{0}\t", i);
Console.Write("\n");
foreach(int i in Replace(2,8,"")){
Console.Write("{0}\t",i);
}
Console.Read();
}
public static IEnumerable<int> Replace(int number,int exponen,string s) {
int result = 1;
if (string.IsNullOrEmpty(s))
Console.WriteLine("Begin to invoke GetItems() method");
IEnumerable<int> example = new List<int>();
for (int i = 0; i < exponen; i++)
(example as List<int>).Add(result*=number);
return example;
//每次yield return <expression>;就会像该类的实例中添加 一条数据。当yield break;的时候停止添加。
//至此yield的用法就很清楚了。当我们需要返回IEnumerable类型的时候,直接yield返回数据就可以了。
//也不用new一个list,或其他类型。所以yield是一个典型的语法糖。
}
public static IEnumerable<int> Power(int number, int exponen, string s)
{
int result = 1;
if (string.IsNullOrEmpty(s))
Console.WriteLine("Begin to invoke GetItems() method");
for (int i = 0; i < exponen; i++)
yield return result *= number;
yield return 3;
yield return 4;
yield return 5;
}
}
}
这是远博主http://www.cnblogs.com/santian/p/4389675.html的概括
个人理解yield就是暂停函数和再次调用就是从yiled已暂停的位置开始执行函数到下一个yield结束或运行完函数结束