namespace ConsoleApp2

{

    class Program

    {

        public static void Main(string[] args)

        {

            List<int> list = new List<int> { 3, 1, 4, 5, 2 };

            IEnumerable<int> enumList = list.WhereFunc();

            Array.ForEach(enumList.ToArray(), (elem) => { Console.Write(elem + ", "); });

        }

    }


    static class a

    { 

        public  static IEnumerable<int> WhereFunc(this IEnumerable<int> inst)

        {

            foreach (var item in inst)

            {

                if (item % 2 == 0)

                {

                    yield return item;

                }

            }

        }

    }

}


이 코드에서 결국 4, 2, 가 출력되는데


yield return이 그 다음번 호출될 때 다음라인부터 실행되게 해주잔아


근데 WhereFunc()는 한 번밖에 호출이 안됐으니까 4만 돌려받고


메서드 끝나는 거 아닌가 왜 2까지 나오는지 이해가 안돼