2010-01-12 9 views
7

Hai guys,Kiedy należy używać wyrażeń lambda dostarczanych z C# 3.0?

Dziś rano moi koledzy deweloperzy rozmawiali o wyrażeniach lambda. Więc zdecydowałem się zapytać tutaj w SO

  • kiedy należy używać wyrażenia lambda , które pochodzi z C# 3.0?
+1

Wyrażenie lambada? Myślałem, że C# jest nowoczesnym językiem, więc dlaczego używa tak starego tanecznego szaleństwa? (SCNR ;-) –

+0

Nie rób żadnych założeń jae, dopóki nie wiesz, co to jest i gdzie jest używany;) wyrażenia lambda w języku C# są świetne i są czymś niezastąpionym w nowoczesnych technologiach, takich jak LINQ. –

+0

jae nie mylić lambda i lambada – baldy

Odpowiedz

2

Nie sądzę, że istnieje ogólna zasada, gdy Twój powinny z nich korzystać, ale kiedy patrzę na siebie I zwykle używam ich, kiedy używam metod anonimowych. Najczęściej zdarza się to podczas tworzenia kodu w nowym wątku przy użyciu ThreadPool lub podczas wykonywania kwerend LINQ. Przykładem

pula wątków:

ThreadPool.QueueUserWorkItem(state => { 
    // the code to run on separate thread goes here 
}); 

LINQ:

var myItems = GetSomeIEnumerable() 
        .Where(o => o.SomeProperty.Equals("some value")); 
        .OrderBy(o => o.SomeOtherProperty); 
5

Wyrażenie lambda jest anonimową funkcją, która może zawierać wyrażenia i instrukcje i może być używana do tworzenia delegatów lub typów drzewek wyrażeń.

spodziewać stosując

del myDelegate = delegate(int x){return x*x; }; 
int j = myDelegate(5); //j = 25 

można napisać

del myDelegate = x => x * x; 
int j = myDelegate(5); //j = 25 
1

Krótka odpowiedź: czytać "C# in depth" z Top-SO najbardziej głosowało towarzysza Jon Skeet. Jest to doskonała książka, a dowiesz się wszystkiego o nowych funkcjach C# 3, szczególnie kiedy ich używać, w tym wyrażeniach Lambda.

0

Przynajmniej nie używają zdarzeń á la

myUserControl.Loaded += (sender, e) => DoSomething(); // coding horror!!!1 :-P 

bo jak na razie nadal nie można wypisać i oczyścić rzeczy już wtedy tak łatwo. Oczywiście są tam fabryki WeakEventHandler i inne, ale nadal najlepiej jest usunąć wszystkie programy obsługi zdarzeń ręcznie po usunięciu UserControl z nadrzędnego.

Dla wszystkich innych rzeczy, myślę, że znacznie poprawiają czytelność, więc korzystaj z własnej oceny.

+0

Nie zgadzam się. Uważam, że są szczególnie przydatne w przypadku wydarzeń. Widzę, że anulowanie subskrypcji jest problemem tylko w kilku przypadkach. –

Powiązane problemy