7

In C#, are lambda expressions objects? If so, what sort of object are they?

4 Answers 4

17

Lambda expressions themselves only exist in source code. They don't have a type themselves, which is why the compiler always insists they're convert to a specific type.

That's why this code doesn't compile:

// No idea what type to convert to!
object x = y => y.Length;

But this does:

Func<string, int> x = y => y.Length;

Lambda expressions are always converted to either a delegate type or an expression tree type. Similarly, anonymous methods are always converted to a delegate type.

Sign up to request clarification or add additional context in comments.

1 Comment

+1 Nice answer. I like that you explain how lambda expressions are really just syntax sugar for either a delegate or an expression tree.
12

Yes, lambda expressions are converted to either a delegate or an expression tree - both of which are objects.

Comments

4

Lambda operations in Linq build what are called expression trees. You can read a bit about it here.

1 Comment

Well they might. Or they might build delegates. It depends on the provider.
0

It's an anonymous function that has to conform to some kind of delegate. msdn So, in fact, they're instances of some delegate type.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.