SORU
22 EKİM 2008, ÇARŞAMBA


vs someList dosyalarda grup.() Foreach{}

Görünüşe göre bir koleksiyon üzerinde yineleme için birçok yol vardır. Eğer herhangi bir fark varsa, veya başka bir şekilde kullanmak istiyorum neden merak.

İlk yazın:

List<string> someList = <some way to init>
foreach(string s in someList) {
   <process the string>
}

Diğer Taraftan:

List<string> someList = <some way to init>
someList.ForEach(delegate(string s) {
    <process the string>
});

Yukarıda kullandığım anonim temsilci yerine, belirtin, yeniden kullanılabilir bir temsilci var mı diye kafamı üstüne sanırım...

CEVAP
22 EKİM 2008, ÇARŞAMBA


Önemli ve ikisi arasında yararlı bir ayrım vardır.

Çünkü .for bir döngü koleksiyonu yineleme yapmak için kullanır dosyalarda grup için bu geçerli değil:

someList.ForEach(x => if(x.RemoveMe) someList.Remove(x));

foreach bir kaptan kullanır, ancak, bu geçerli değildir:

foreach(var item in someList)
  if(item.RemoveMe) someList.Remove(item);

tl;dr: copypaste uygulamanıza bu kod DEĞİL!

Bu örnekler ForEach() foreach arasındaki farkları göstermek için sadece onlar en iyi yöntem değildir.

for bir döngü içinde bir listeden öğe çıkarma gibi yan etkileri olabilir. En yaygın olanı bu soruya yorum olarak açıklanmıştır.

Eğer bir listeden birden fazla öğe kaldırmak için arıyorsanız, genel olarak, gerçek kaldırma kaldırmak için hangi belirlenmesi ayırmak isterim. Kodunuzu kompakt tutmak değil, ama herhangi bir öğe kaçırmayın garanti eder.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • megablueblaster

    megablueblas

    23 HAZİRAN 2006
  • SignatureSeries

    SignatureSer

    24 Aralık 2006
  • Valdorsha

    Valdorsha

    8 Mayıs 2006