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

  • Ama Jenna

    Ama Jenna

    29 NİSAN 2011
  • Cartoonium

    Cartoonium

    11 NİSAN 2011
  • SaraBeautyCorner - Nails and Nail Art Designs, DIY, Fashion & Makeup Tutorial

    SaraBeautyCo

    7 EKİM 2012