Anonymous Methods In C#
A block of code can be included while a delegate is defined. This defined block is called anonymous method. With this approach, there is no need to create a method.
Example
using System;
namespace ConsoleApplication3
{
public delegate int Calculate(int num);
class Factorial
{
static void Main(string[] args)
{
int value = 6;
Calculate objFact = delegate(int number)
{
int num = 1;
for (int i = 1; i <= number; i++) { num *= i; } return num; }; Console.WriteLine("Factorial : " + objFact(value)); } } }
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication2
{
public delegate int Calculate(int num);
class Factorial
{
static void Start()
{
int value = 5;
Calculate objFact = delegate(int number)
{
int num = 1;
for (int i = 1; i <= number; i++) { num *= i; } return num; }; Console.WriteLine("Factorial : " + objFact(value)); } static void Main(string[] args) { Start(); } } }
using System;
namespace ConsoleApplication3
{
public delegate void Calculate(int num);
class Factorial
{
static void Main(string[] args)
{
Calculate objFact = delegate(int number)
{
int num = 1;
for (int i = 1; i <= number; i++) { num *= i; } Console.WriteLine("Factorial: " + num); }; int value; Console.Write("Num: "); value = Int32.Parse(Console.ReadLine()); objFact(value); } } }
using System;
namespace ConsoleApplication3
{
public delegate void Calculate();
class Factorial
{
static void Main(string[] args)
{
Calculate objFact = delegate()
{
int num = 1;
Console.Write("Num:");
int number = Int32.Parse(Console.ReadLine());
for (int i = 1; i <= number; i++) { num *= i; } Console.WriteLine("Factorial: " + num); }; objFact(); } } } Example
using System;
namespace ConsoleApplication3
{
public delegate int Calculate(int num);
class Factorial
{
static void Start(int n)
{
int value = n;
Calculate objFact = delegate(int number)
{
int num = 1;
for (int i = 1; i <= number; i++) { num *= i; } return num; }; Console.WriteLine("Factorial : " + objFact(value)); } static void Main(string[] args) { int value; value = Int32.Parse(Console.ReadLine()); Start(value); } } }
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication2
{
public delegate void Add(out int numOne, out int numTwo);
class Maths
{
static void Start()
{
int valOne;
int valTwo;
Add objAddition = delegate(out int numOne, out int numTwo)
{
numOne = 10;
numTwo = 20;
int result = numOne + numTwo;
Console.WriteLine("Result of Addition : " + result);
};
objAddition(out valOne, out valTwo);
}
static void Main(string[] args)
{
Start();
}
}
}
Not more than one value can be passed in anonymous delegate. If you want to pass more than one value then you will have to use out keyword.
using System;
namespace ConsoleApplication3
{
public delegate void Calculate();
class Factorial
{
static void Start(int n1,int n2)
{
int value1 = n1;
int value2 = n2;
Calculate objFact = delegate()
{
int result = value1 + value2;
Console.WriteLine(result);
};
objFact();
}
static void Main(string[] args)
{
int value1,value2;
value1 = Int32.Parse(Console.ReadLine());
value2 = Int32.Parse(Console.ReadLine());
Start(value1,value2);
}
}
}
Example
using System;
namespace ConsoleApplication3
{
public delegate int Calculate(int num);
class Factorial
{
static void Main(string[] args)
{
int value = 6;
Calculate objFact = delegate(int number)
{
int num = 1;
for (int i = 1; i <= number; i++) { num *= i; } return num; }; Console.WriteLine("Factorial : " + objFact(value)); } } }
Anonymous Methods declared in some user defined method
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication2
{
public delegate int Calculate(int num);
class Factorial
{
static void Start()
{
int value = 5;
Calculate objFact = delegate(int number)
{
int num = 1;
for (int i = 1; i <= number; i++) { num *= i; } return num; }; Console.WriteLine("Factorial : " + objFact(value)); } static void Main(string[] args) { Start(); } } }
Anonymous Methods without return types
using System;
namespace ConsoleApplication3
{
public delegate void Calculate(int num);
class Factorial
{
static void Main(string[] args)
{
Calculate objFact = delegate(int number)
{
int num = 1;
for (int i = 1; i <= number; i++) { num *= i; } Console.WriteLine("Factorial: " + num); }; int value; Console.Write("Num: "); value = Int32.Parse(Console.ReadLine()); objFact(value); } } }
Anonymous Methods without return types and arguments
using System;
namespace ConsoleApplication3
{
public delegate void Calculate();
class Factorial
{
static void Main(string[] args)
{
Calculate objFact = delegate()
{
int num = 1;
Console.Write("Num:");
int number = Int32.Parse(Console.ReadLine());
for (int i = 1; i <= number; i++) { num *= i; } Console.WriteLine("Factorial: " + num); }; objFact(); } } } Example
using System;
namespace ConsoleApplication3
{
public delegate int Calculate(int num);
class Factorial
{
static void Start(int n)
{
int value = n;
Calculate objFact = delegate(int number)
{
int num = 1;
for (int i = 1; i <= number; i++) { num *= i; } return num; }; Console.WriteLine("Factorial : " + objFact(value)); } static void Main(string[] args) { int value; value = Int32.Parse(Console.ReadLine()); Start(value); } } }
Passing Paramenters to Anonymous Methods
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication2
{
public delegate void Add(out int numOne, out int numTwo);
class Maths
{
static void Start()
{
int valOne;
int valTwo;
Add objAddition = delegate(out int numOne, out int numTwo)
{
numOne = 10;
numTwo = 20;
int result = numOne + numTwo;
Console.WriteLine("Result of Addition : " + result);
};
objAddition(out valOne, out valTwo);
}
static void Main(string[] args)
{
Start();
}
}
}
Not more than one value can be passed in anonymous delegate. If you want to pass more than one value then you will have to use out keyword.
Anonymous method returning a value and without any arguments
using System;
namespace ConsoleApplication3
{
public delegate void Calculate();
class Factorial
{
static void Start(int n1,int n2)
{
int value1 = n1;
int value2 = n2;
Calculate objFact = delegate()
{
int result = value1 + value2;
Console.WriteLine(result);
};
objFact();
}
static void Main(string[] args)
{
int value1,value2;
value1 = Int32.Parse(Console.ReadLine());
value2 = Int32.Parse(Console.ReadLine());
Start(value1,value2);
}
}
}
No comments:
Post a Comment