user544079
user544079

Reputation: 16629

Lambda expression for multiple parameters

I understand a lambda expression is in essence an inline delegate declaration to prevent the extra step

example

delegate int Square(int x)
public class Program
{
   static void Main(String[] args)
   {
      Square s = x=>x*x;
      int result = s(5);
      Console.WriteLine(result); // gives 25
   }
}

How does one apply Lambda expressions to multi parameters Something like

 delegate int Add(int a, int b)
 static void Main(String[] args)
 {
    // Lambda expression goes here
 }

How can multi parameters be expressed using Lambda expressions?

Upvotes: 36

Views: 64793

Answers (3)

Eric J.
Eric J.

Reputation: 150108

Yes. When you have other-than-one (zero, or > 1) lambda arguments, use parenthesis around them.

Examples

Func<int, int, int> add = (a,b) => a + b;

int result = add(1, 3);

Func<int> constant = () => 42;

var life = constant();

Upvotes: 15

Aben
Aben

Reputation: 21

delegate int Multiplication(int x, int y)
public class Program
{
   static void Main(String[] args)
   {
      Multiplication s = (o,p)=>o*p;
      int result = s(5,2);
      Console.WriteLine(result); // gives 10
   }
}

Upvotes: 2

spajce
spajce

Reputation: 7082

You must understand the Func behavior, where the last parameter is always the output or result

Func<1, 2, outPut>

Func<int, int, int> Add = (x, y) => x + y;

Func<int, int, int> diff = (x, y) => x - y;

Func<int, int, int> multi = (x, y) => x * y;

Upvotes: 53

Related Questions