Write a method which accepts a lambda expression

Viewed 21802

I have a method with the following signature:

 void MyMethod(Delegate d){};
 void MyMethod(Expression exp){};
 void MyMethod(object obj){};

However, this fails to compile:

MyMethod((int a) => a)

with the following error:

"Cannot convert lambda expression to type 'object' because it is not a delegate type"

Why doesn't this work?

Edit: I know that this works. The compiler compiles the lambda expression to a delgate in this case I think.

void MyMethod(Func<int, int> d){};

Kind regards,

6 Answers
Related