Metoda zwracająca interfejs wyjaśnienie

0

Witam
Szukałem wyjaśnienia yield return w C# i natrafiłem na ciekawą metodę, a mianowicie static IEnumerable<int> Filter().
Czy mógłby mi ktoś wytłumaczyć dlaczego to działa, jak metoda może zwracać interfejs?
Przepraszam jeśli strzeliłem głupotę ale dopiero się uczę. Dziękuję i Pozdrawiam.
Źródło:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace YieldReturn
{
    class Program
    {
        static List<int> MyList = new List<int>();

        static void Main(string[] args)
        {
            FillList();
            foreach (int n in Filter())
            {
                Console.WriteLine(n.ToString());
            }
        }

        
        static void FillList()
        {
            MyList.Add(1);
            MyList.Add(2);
            MyList.Add(3);
            MyList.Add(4);
            MyList.Add(5);
        }

        static IEnumerable<int> Filter()
        {
            
            foreach(int i in MyList)
            {
                if(i>3)
                {
                    yield return i;
                }
            }
            
        }

       
    }
}
1

Metoda nie zwraca interfejsu tylko cos co implementuje ten interfejs (podobnie jak moze przyjmowac jako parametr cos co implementuje interfejs np. public void DoSomething(IEnumerable<string> collection) ale w wywolaniu trzeba przekazac konkretna klase np. DoSomething(new List<string> {"1", "2", "3"})).
yield jest tylko cukrem skladniowym dla zdefiniowania iteratora, ktory z definicji implementuje IEnumerable.
Wiecej mozna poczytac tutaj: http://msdn.microsoft.com/pl-pl/library/9k7k7cf0.aspx albo sobie pogooglac :)

0

Dzięki zrozumiałem :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1