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

  • Canal de arkyoru

    Canal de ark

    18 Ocak 2007
  • natescamp

    natescamp

    30 NİSAN 2009
  • WoodysGamertag

    WoodysGamert

    17 Aralık 2009