SORU
5 Mayıs 2009, Salı


SERİ boyunca koleksiyonun tüm elemanları için işlevi uygulamak

Son zamanlarda ETMENİZ ve onun şaşırtıcı ile başladı. Eğer ETMENİZ beni bir fonksiyon - herhangi bir fonksiyonu uygulamak için foreach kullanarak olmadan bir koleksiyonun tüm elemanları için izin olacağını merak ediyordum. Python lambda fonksiyonları gibi bir şey.

Eğer int bir liste var örneğin, her element ETMENİZ kullanarak bir sabit ekleyebilirim

Eğer DB bir tablo var, tüm kayıtları ETMENİZ kullanmak için bir alan ayarlayabilirsiniz.

C kullanıyorum#

CEVAP
5 Mayıs 2009, Salı


Bu yaklaşımın yaygın bir şekilde IEnumerable<T> ForEach kendi genel yöntemi eklemektir. İşte MoreLINQ var:

public static void ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
    source.ThrowIfNull("source");
    action.ThrowIfNull("action");
    foreach (T element in source)
    {
        action(element);
    }
}

(ThrowIfNull herhangi bir referans Türüne bir uzantı yöntemi olduğu, açık bir şey yok.)

Eğer bunun bir parçası olup olmadığını görmek için ilginç olacak .NET 4.0. SERİ işlevsel stil aykırı, ama bir sürü insan bunu yararlı şüphe yok.

O var sonra, şöyle bir şey yazabilirsiniz:

people.Where(person => person.Age < 21)
      .ForEach(person => person.EjectFromBar());

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DavidParody

    DavidParody

    17 EKİM 2009
  • Migs351

    Migs351

    3 HAZİRAN 2007
  • New Challenger - Game Reviews

    New Challeng

    20 Temmuz 2006