ACP
ACP

Reputation: 35268

when should i use lambda expressions which comes with C# 3.0?

Hai guys,

My fellow developers were talking about lambda expressions this morning. So i decided to ask it here in SO

Upvotes: 7

Views: 895

Answers (4)

herzmeister
herzmeister

Reputation: 11287

At least don't use for events á la

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

because as of now you still can't unsubscribe and clean up things anymore then so easily. Sure there are WeakEventHandler factories and stuff out there but it's still best to remove all event handlers manually once the UserControl is removed from its parent.

For everything else, I think they do improve readability a lot, so use at own judgement.

Upvotes: 0

Arsen Mkrtchyan
Arsen Mkrtchyan

Reputation: 50712

A lambda expression is an anonymous function that can contain expressions and statements, and can be used to create delegates or expression tree types.

expect of using

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

you can write

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

Upvotes: 5

Doc Brown
Doc Brown

Reputation: 20044

Short answer: read "C# in depth" from SO's top-most voted fellow Jon Skeet. Its an excellent book and you will learn all about the new C# 3 features, especially when to use them, including Lambda expressions.

Upvotes: 1

Fredrik Mörk
Fredrik Mörk

Reputation: 158289

I don't think that there is a general rule when your should use them, but if I look to myself I tend to use them whenever I use anonymous methods. Most often this happens when spawning some code in a new thread using the ThreadPool, or when doing LINQ queries.

ThreadPool example:

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);

Upvotes: 2

Related Questions