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?
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
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);
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
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.
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.
Nie zgadzam się. Uważam, że są szczególnie przydatne w przypadku wydarzeń. Widzę, że anulowanie subskrypcji jest problemem tylko w kilku przypadkach. –
Wyrażenie lambada? Myślałem, że C# jest nowoczesnym językiem, więc dlaczego używa tak starego tanecznego szaleństwa? (SCNR ;-) –
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. –
jae nie mylić lambda i lambada – baldy