-1
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 リターンは常に実行され、ネストされた yield リターンは決して実行されないと想定していました。しかし、これはそうではありません。これは、yield return ステートメントについて私がよく理解していないことがあるということを示しています。

誰かがこれを説明できますか?

ありがとうジェームズ

4

1 に答える 1

0

列挙子から単一の要素のみが要求された場合は正しいですが、より多くの要素が要求された場合は、foreachより多くの要素を生成するために内部を実行する必要があります。

于 2013-06-04T15:38:10.500 に答える