Jestem programistą VB.Net, rodzajem newbie w C#, Szukając w C# dokumentacji przeszedłem przez Iteratory i Generatory, nie mogłem w pełni zrozumieć użycia, Ja tam każdy, kto może wyjaśnić (w vb spostrzegawczy, jeśli to możliwe)Co to są Iteratory i Generatory C# i jak mogę je wykorzystać
Odpowiedz
Typeratory to łatwy sposób na wygenerowanie sekwencji przedmiotów, bez konieczności samodzielnego wdrożenia IEnumerable<T>
/IEnumerator<T>
. Iterator to metoda zwracająca wartość IEnumerable<T>
, którą można wyliczyć w pętli foreach.
Oto prosty przykład:
public IEnumerable<string> GetNames()
{
yield return "Joe";
yield return "Jack";
yield return "Jane";
}
foreach(string name in GetNames())
{
Console.WriteLine(name);
}
zauważy oświadczenia yield return
: to stwierdzenie nie faktycznie powrót z metody, po prostu „push” do następnego elementu, kto czyta realizację.
Gdy kompilator napotyka blok iteratora, w rzeczywistości przepisuje go na automat stanów w klasie, która implementuje IEnumerable<T>
i IEnumerator<T>
. Każda instrukcja yield return
w iteratorze odpowiada stanowi w tym automacie stanów.
Zobacz this article Jon Skeet po więcej informacji na temat iteratorów.
Byłoby pomocne zobaczyć przykład, kiedy może zajść taka potrzeba. Twój prosty przykład może zostać zastąpiony tablicą ciągów znaków, jeśli celem jest wyliczenie "Joe" "Jack" i "Jane"? – MarkJ
Tak, ten przykład nie jest zbyt użyteczny, możesz z łatwością użyć tablicy. Więcej przydatnych przykładów można znaleźć w artykule [Jon Skeet's series on Reimplementing Linq to Objects] (http://msmvps.com/blogs/jon_skeet/archive/tags/Edulinq/default.aspx);) –
- 1. Co to są Iteratory SCARY?
- 2. Co to są `+:` i `-:`?
- 3. Lazy iteratory (generatory) z asyncio
- 4. Co to są wyściełane ciągi zakodowane w Base64 i jak mogę je wygenerować w rubinach?
- 5. Co to są ReservedCodeCacheSize i InitialCodeCacheSize?
- 6. Co to są aplikacje Chrome vs wtyczki i rozszerzenia oraz jak je rozwijać
- 7. Co to są bity niższe i wyższe?
- 8. Co to są klasy S1 i S2?
- 9. Co to są: + i &: + w Ruby?
- 10. Co to są dict_keys, dict_items i dict_values
- 11. Co to są klasy "string", "stream" i "stringstream" w C++?
- 12. Co to są sygnały i gniazda?
- 13. Co to są aspnet50 i aspnetcore50?
- 14. Co to są funkcje __defineGetter __() i __defineSetter __()?
- 15. Co to są paddingStart i paddingEnd?
- 16. W jaki sposób realizowane są generatory i coroutines w CPython?
- 17. Co to są klasy Dynamic Proxy i dlaczego miałbym je używać?
- 18. Scala - iteratory i takeWhile
- 19. Co to są ALL_BUILD i ZERO_CHECK i czy ich potrzebuję?
- 20. Co to są podzielniki i kiedy ich użycie jest konieczne?
- 21. Co to są Android SyncAdapter contentAuthority i accountType?
- 22. C# - Co to jest komponent i jak jest zwykle używany?
- 23. Jak mogę wykorzystać zarówno stan, jak i pisarz w haskell?
- 24. Co to są pojęcia?
- 25. Iteratory i odniesienie liczone ciągi
- 26. Jak mogę skompresować więcej niż dwa iteratory?
- 27. Co to jest S_ISREG() i co robi?
- 28. Co to są "rodzime" i "dosłowne" słowa kluczowe
- 29. Co to są generics w C#?
- 30. Co to są operatory Pointer-to-Member -> * i. * W C++?
Iteratory są najczęściej używane do przeglądania list różnych typów. Iteratory nazywane są enumeratorami w .net. Kolejne pytanie dotyczące iteratorów: http://stackoverflow.com/questions/1227283/why-do-we-need-iterators-in-c – jgauffin