using System.Reflection;
internal class TestReflection
{
public static IEnumerable<object> ParseType(Type t)
{
foreach (MemberInfo mi in t.GetMembers())
{
yield return mi;
foreach (object x in mi.GetCustomAttributes(true))
{
yield return x;
}
}
}
}
所以我的问题是迭代器如何知道何时进入嵌套的foreach。我假设第一个yield return将始终执行,并且嵌套的yield return永远不会执行。但事实并非如此,这表明我对收益率回报声明并不十分了解。
有人可以解释一下吗?
由于 詹姆斯
答案 0 :(得分:0)
如果只从枚举器中请求了一个元素,那么你就是对的,但是如果要求更多的元素,则必须执行内部foreach
以生成更多的元素。