C# IEnumerable如何在具有Yield-return的方法中返回元素/项 类程序{ 静态列表; 静态void Main(字符串[]参数){ MyList=新列表(){1,24,56,7}; var sn=FilterWithYield(); } 静态IEnumerable FilterWithYield(){ foreach(MyList中的int i){ 如果(i>3) 收益率i; } } }
问题:IEnumerable是一种只读类型。所以我的问题是IEnumerable如何只返回一个元素。IEnumerable方法没有要添加的内容。它是否从IEnumerator的属性“Current”返回。??如果是这样的话,我们能说每次收益率返回一个元素/项目时,它是IEnumerator的当前属性吗 使用C# IEnumerable如何在具有Yield-return的方法中返回元素/项 类程序{ 静态列表; 静态void Main(字符串[]参数){ MyList=新列表(){1,24,56,7}; var sn=FilterWithYield(); } 静态IEnumerable FilterWithYield(){ foreach(MyList中的int i){ 如果(i>3) 收益率i; } } },c#,C#,问题:IEnumerable是一种只读类型。所以我的问题是IEnumerable如何只返回一个元素。IEnumerable方法没有要添加的内容。它是否从IEnumerator的属性“Current”返回。??如果是这样的话,我们能说每次收益率返回一个元素/项目时,它是IEnumerator的当前属性吗 使用yield关键字时,表示该方法是迭代器。使用yield来定义迭代器,就不需要显式的额外类来保存枚举的状态 当您使用foreach语句使用迭代器方法时,foreach循环的每次迭代都会调用迭代器
yield
关键字时,表示该方法是迭代器。使用yield
来定义迭代器,就不需要显式的额外类来保存枚举的状态
当您使用
foreach
语句使用迭代器方法时,foreach
循环的每次迭代都会调用迭代器方法。当迭代器方法中到达yield return
语句时,将返回表达式,并保留代码中的当前位置。下次调用迭代器函数时,将从该位置重新启动执行。听起来您可能想要阅读,Jon的建议很好。您可能还想阅读以下内容:
class Program {
static List<int> MyList;
static void Main(string[] args) {
MyList = new List<int>() { 1,24,56,7};
var sn = FilterWithYield();
}
static IEnumerable<int> FilterWithYield() {
foreach (int i in MyList) {
if (i > 3)
yield return i;
}
}
}