2008-12-13 23 views
6

Wlać swoje posty. Zacznę od pary, zobaczmy, ile możemy zebrać.W jaki sposób używasz wyrażeń C# Lambda?

Aby zapewnić inline obsługi zdarzeń jak

button.Click += (sender,args) => 
{ 
}; 

Aby znaleźć elementy w kolekcji

var dogs= animals.Where(animal => animal.Type == "dog"); 

Dla iteracji kolekcji, jak

animals.ForEach(animal=>Console.WriteLine(animal.Name)); 

Niech przyjdą !!

+1

Nie jest SO h już wystarczająco bezcelowe "pytania"? Co powiesz na pytanie, jak ludzie używają instrukcji "if"? Lub zajęcia? może int? Lambda to po prostu przydatna nowa funkcja w języku, na równi z każdą inną cechą tego języka. Czy przez cały czas potrzebujemy tych pytań na temat repliki? – jalf

+0

Jalf, ja sam przejrzałem kod i napisałem, i odkryłem, że używam Lambdas na różne interesujące sposoby - w porównaniu do Ifs i Whilli, Lambda jest znacznie potężniejszą funkcją. Dlatego myślałem, że ten post pomoże sobie i innym, aby dowiedzieć się więcej zastosowań. – amazedsaint

Odpowiedz

3

Wracając obiekt niestandardowy:

var dude = mySource.Select(x => new {Name = x.name, Surname = x.surname}); 
+2

Czy wiesz, że możesz po prostu zrobić nowe {x.name, x.surname}? Właściwości będą małe jak w tym przykładzie. – leppie

0

tworząc akumulator.

static Func<int, int> Foo(int n) 
    { 
     return a => n += a; 
    } 

Uwaga na użycie zamknięcia tutaj. tworzy akumulator, który "pamięta" wartość n między połączeniami - bez zmiennej klasy lub instancji.

-1

Aby wyrazić nienazwaną funkcję.

+0

@DaveZych - ok, może zrobię to, cztery lata później. –

+1

Możesz usunąć odpowiedź ... Dostałem się także za pomocą narzędzi ... – gdoron

+0

@DaveZych. Niestety to odpowiada na pytanie. dlatego zgłosiłem to pytanie do usunięcia ... – gdoron

2

Jedna linia funkcja

Func<int, int> multiply = x => x * 2; 
int y = multiply(4); 
2

Oto nieco inna - można z nich korzystać (like this) symulować brakujące „infoof”/„nameof” operatorów w C# - czyli tak, że zamiast ciężko kodowania do nazwa właściwości jako ciąg, możesz użyć lambda. Oznacza to, że jest on sprawdzany podczas kompilacji (których łańcuchy nie mogą być).

Istnieje oczywiście koszt wydajność tego, stąd "tylko dla zabawy", ale ciekawe ...

0

zagregowanych operacji z LINQ:

public Double GetLengthOfElements(string[] wordArr) { 

    double count = wordArr.Sum(word => word.Length); 
    return count; 
} 

pewno bije korzystających foreach

1

Z wywoływaczem metody do aktualizacji interfejsu użytkownika z zdarzenia wielowątkowego componentenet

void Task_Progress(object sender,TaskProgressArgs e) 
{ 
    BeginInvoke(new MethodInvoker(() => UpdateProgress(e))); 
} 
Powiązane problemy