Ben bir VB.Net geliştiricisiyim, C#, türünde yeni bir kullanıcıyım C# belgelerine bakarken Yineleyiciler ve Jeneratörler aracılığıyla geldim, kullanımı tam olarak anlayamadım, Orada açıklayabileceğim herkes var (örneğin, eğer mümkün ise).C# Yineleyicileri ve Jeneratörleri nedir ve bunları nasıl kullanabilirim?
cevap
Yineleyiciler, IEnumerable<T>
/IEnumerator<T>
kendiniz uygulamak zorunda kalmadan bir dizi öğe oluşturmanın kolay bir yoludur. Bir yineleyici, bir foreach döngüsünde numaralandırabileceğiniz bir IEnumerable<T>
döndüren bir yöntemdir.
İşte basit bir örnek:
public IEnumerable<string> GetNames()
{
yield return "Joe";
yield return "Jack";
yield return "Jane";
}
foreach(string name in GetNames())
{
Console.WriteLine(name);
}
Bildirim yield return
ifadeleri: Bu deyim aslında yöntemde, sadece "itme" uygulamasını okuyor kim yanındaki eleman dönmek yok.
Derleyici bir yineleyici bloğuyla karşılaştığında, aslında IEnumerable<T>
ve IEnumerator<T>
'u uygulayan bir sınıftaki bir durum makinesine yeniden yazar. Yineleyicideki her yield return
ifade, bu durum makinesindeki bir duruma karşılık gelir.
Yineleyiciler hakkında daha ayrıntılı bilgi için Jon Skeet tarafından this article adresine bakın.
Bunu yapmak için ne zaman gerektiğine dair bir örnek görmek faydalı olabilir. Hedefiniz sadece "Joe" "Jack" ve "Jane" üzerinden numaralandırmaya izin vermekse, basit örnekiniz sadece bir dizi diziyle değiştirilebilir. – MarkJ
Evet, bu örnek pek kullanışlı değil, bunun yerine bir diziyi kolayca kullanabilirsiniz. Daha kullanışlı örnekler için, [Jon Skeet'in Nesneleri Yeniden Linki Yeniden Oluşturma dizisi] bölümüne bakın (http://msmvps.com/blogs/jon_skeet/archive/tags/Edulinq/default.aspx);) –
- 1. İfade Ağaçları nedir, bunları nasıl kullanırsınız ve neden bunları kullanırsınız?
- 2. Prolog'da -> operatörü nedir ve nasıl kullanabilirim?
- 3. Giriş yineleyicileri ve salt okunur ileticiler arasındaki fark nedir?
- 4. El/element nedir? Bunu nasıl kullanabilirim? Ve neden?
- 5. getErrorDialog amortismana tabi tutuldu. Güncellenen işlev nedir ve nasıl kullanabilirim?
- 6. Geri çağırma işlevi nedir ve OOP ile nasıl kullanabilirim
- 7. Lambda ifadeleri ve bunları nasıl birleştireceksiniz?
- 8. OpenCV'de nasıl konturlar (ve bunları doldurulur) alınır?
- 9. Python'un birden çok sürümünü en son OS X'e nasıl yükleyebilirim ve bunları paralel olarak kullanabilirim?
- 10. Streambuf tam olarak nedir? Bunu nasıl kullanabilirim?
- 11. İki vektörü kilitleme ve bunları sıralama
- 12. C# kullanabilirim, C# Java
- 13. Kod Sözleşmelerini C++/CLI projesinde nasıl kullanabilirim?
- 14. Kullanılan kapsayıcıyı açığa çıkarmadan yineleyicileri nasıl gösterebilirim?
- 15. C# uygulamasından Delphi kodunu nasıl kullanabilirim?
- 16. Tornado ve Redis'i eşzamansız olarak nasıl kullanabilirim?
- 17. Mermileri ve Numaralandırmayı Not Defteri'nde nasıl kullanabilirim ++?
- 18. Temizle kontroller bunları bertaraf etmez - risk nedir?
- 19. Diğer 5xx hataları nasıl oluşabilir ve bunları nasıl bulabilirim/izlerim?
- 20. Niçin destek geri yineleyicileri silmez?
- 21. Daha anlamlı python yineleyicileri nasıl yapılır? Sadece C++ yineleyici gibi
- 22. Dizi sıralama ve bunları kesme/ayırma
- 23. JUnit @Before ve @Test nedir
- 24. Niçin yineleyicileri taşıyamıyorduk?
- 25. dSYM nedir ve nasıl kullanılır? (iOS SDK)
- 26. json dosyasını nasıl yükleyebilir ve getirme işlevini nasıl kullanabilirim ve bu şekilde ağ grafiği nasıl oluşturulur?
- 27. `+:` ve `-:` nedir?
- 28. C#, .NET ve CLI arasındaki fark nedir?
- 29. Java'da yineleme yineleyicileri Java'da
- 30. Bu IP bloğunda hangi IP'ler bulunur ve bunları nasıl kullanırsınız?
Yineleyiciler, genellikle farklı türlerin listelerini taşımak için kullanılır. Yineleyiciler .net'de Enumerators olarak adlandırılır. Yineleyicilerle ilgili başka bir soru: http://stackoverflow.com/questions/1227283/why-do-we-need-iterators-in-c – jgauffin