c# - C iterator - C #에서 사용되는 yield 키워드는 무엇입니까?

C GetEnumerator / c# / yield

에서 어떻게 내가 IList의 <만이 조각을 노출> 답변의 질문 중 하나는 다음과 같은 코드를 가지고 :

IEnumerable<object> FilteredList()
{
    foreach(object item in FullList)
    {
        if(IsItemInPartialList(item))
            yield return item;
    }
}

Tvde1



Answer #1

수율이 없으면 컬렉션의 모든 항목이 한 번에 생성됩니다.

class SomeData
{
    public SomeData() { }

    static public IEnumerable<SomeData> CreateSomeDatas()
    {
        return new List<SomeData> {
            new SomeData(), 
            new SomeData(), 
            new SomeData()
        };
    }
}

yield를 사용하는 동일한 코드, 항목별로 항목을 반환합니다.

class SomeData
{
    public SomeData() { }

    static public IEnumerable<SomeData> CreateSomeDatas()
    {
        yield return new SomeData();
        yield return new SomeData();
        yield return new SomeData();
    }
}