-1

IEnumerable インターフェイスについて読んでいるときに、これら 2 つのコード スニペットに出会いました。それらの正確な違いを簡単な言葉で理解したいと思います。

スニペット 1 : 利回りなし、

    public IEnumerator GetEnumerator()
    {
        // Return the array object's IEnumerator.
        return carArray.GetEnumerator();
    }

スニペット 2: 利回りあり

    public IEnumerator GetEnumerator()
    {
        foreach (Car c in carArray)
        {
            yield return c;
        }
    }

どちらのスニペットも同じ働きをします。では、ここで YIELD を使用することの具体的な理由は何でしょうか?

前もって感謝します :)

4

3 に答える 3

0

あ、でも違います!yield return呼び出し元の関数に制御を戻すちょっとした構文糖衣です。コレクション内の特定の値を探していることがわかっている場合は、呼び出し元にコレクション全体を返す必要がなく、必要なものを取得したら列挙を短絡できるように、最適化の機会が提供されます。

では、どのようにそれを行うのですか?http://startbigthinksmall.wordpress.com/2008/06/09/behind-the-scenes-of-the-c-yield-keyword/yield returnで説明されている switch ステートメントに変わります。

ここにもそれを説明する本当に良いビデオがあります: https://www.youtube.com/watch?v=Or9g8LOhXhg

于 2014-03-29T12:17:56.063 に答える