Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

IEnumerable


reyou

Öne çıkan mesajlar


IEnumerable<string> lines = File.ReadLines(filePath);


abi simdi C# icerisinde IEnumerable interface tanimlanmis,
ve lines objesi bir class instancesi gibi davraniyo,

e simdi bu adamlar nie IEnumerable diye bi class degilde interface tanimlanis?

bide niye parametre olarakta (object) olarak degil

su <...> isareti acaip kafami karistiriyo benim :S
Link to comment
Sosyal ağlarda paylaş

ReadLines() metodunun döndürdüğü obje (ne olduğunu buradan bilemiyoruz tabii), IEnumerable instance'ından türetilmiş olmalı. yoksa IEnumerable<> generic'ine atanamazdı.

IEnumerable'da objeleri koleksiyon gibi kullanmamızı sağlayan bir interface. bu interface'i uygulamış objeler içinde (aslında bize sundukları koleksiyonlarda) dönebiliyoruz ya da pointer sayesinde ilerleyebiliyoruz.

"<>" type belirtiyor. "type" ne dersen, c# generic mantığını anlamak lazım. generic method'u anlamak için de delegate mantığını anlaman lazım.. bunları anlamak da önemli aslında.. event handling'den tut da, linq ya da lambda expression'a kadar bir çok konu, bu temel üzerinde ilerliyor. ve kesinlikle karışık bir konu.

mesela senin örneğinde IEnumerable, string tipinde bir objeyi delege edip, metodlarını çalıştırabiliyor. jenerikliği de buradan geliyor zaten.. zira başka tipte objeleri de aynı biçimde kabul edebiliyor (atıyorum int array olsaydı da kabul edebilecekti). yani metodları, parametrik tiplerinden bağımsız olarak çağırma olayının kendisi delegation zaten. "<>" gördüğün her obje de aslında generic. zira tipten bağımsız hareket ediyor.
Link to comment
Sosyal ağlarda paylaş

reyou said:

e simdi bu adamlar nie IEnumerable diye bi class degilde interface tanimlanis?


belirli ortak özellikleri olan sınıfları bir çatı altında toplamak için interface tanımlarsın. öyle durumlar oluşuyor ki bir nesnenin hangi sınıfa ait olduğu değil, sadece Enumerable (veya başka bir interface) olduğu ilgilendiriyor seni. Bu tarz durumlarda çok daha esnek ve genişletmesi kolay yazılım geliştirmeni sağlıyor. open - closed principle, loose coupling, dependency injection gibi konuları araştır biraz bence. factory design pattern'ını incele falan. daha netleşir bazı şeyler kafanda.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...