namespace WhyDelegateRequired
{
#region Using lamda expression
class Program
{
delegate bool myDelegate(int n);
static void Main(string[] args)
{
int[] numbers = new[] { 1, 45, 23, 49, 2, 6, 9, 5, 678, 89, 5, 45, 7 };
IEnumerable<int> resultGreaterThanFive = GetAllNumberAsPerRequiredCondtion(numbers, n => n > 5);
IEnumerable<int> resultLessThanFive = GetAllNumberAsPerRequiredCondtion(numbers, n => n < 5);
IEnumerable<int> resultEqualToFive = GetAllNumberAsPerRequiredCondtion(numbers, n => n == 5);
foreach (int number in resultEqualToFive)
{
Console.WriteLine(number);
}
Console.ReadKey();
}
private static IEnumerable<int> GetAllNumberAsPerRequiredCondtion(int[] numbers, myDelegate Condition)
{
foreach (int number in numbers)
{
if (Condition(number))
{
yield return number;
}
}
}
}
#endregion
#region Why delegate is useful
//class Program
//{
// delegate bool myDelegate(int n);
// static bool lessThanFive(int n) { return n < 5; }
// static bool lessThanTen(int n) { return n < 10; }
// static bool lessThanThirtyFive(int n) { return n < 35; }
// static bool GreaterThanFive(int n) { return n > 5; }
// static bool EqualToFive(int n) { return n == 5; }
// static void Main(string[] args)
// {
// int[] numbers = new[] { 1, 45, 23, 49, 2, 6, 9,5,678,89,5,45,7 };
// IEnumerable<int> resultGreaterThanFive = GetAllNumberAsPerRequiredCondtion(numbers, GreaterThanFive);
// IEnumerable<int> resultLessThanFive = GetAllNumberAsPerRequiredCondtion(numbers,lessThanFive);
// IEnumerable<int> resultEqualToFive = GetAllNumberAsPerRequiredCondtion(numbers,EqualToFive);
// foreach (int number in resultEqualToFive)
// {
// Console.WriteLine(number);
// }
// Console.ReadKey();
// }
// private static IEnumerable<int> GetAllNumberAsPerRequiredCondtion(int[] numbers,myDelegate Condition)
// {
// foreach (int number in numbers)
// {
// if (Condition(number))
// {
// yield return number;
// }
// }
// }
//}
#endregion
#region Without Delegate Code
//class Program
//{
// static void Main(string[] args)
// {
// int[] numbers = new[] { 1, 45, 23, 49, 2, 6, 9 };
// IEnumerable<int> resultGreaterThanFive = GetAllNumberGreaterThenFive(numbers);
// IEnumerable<int> resultLessThanFive = GetAllNumberLessThenFive(numbers);
// IEnumerable<int> resultGreaterThanTen = GetAllNumberGreaterThenTen(numbers);
// foreach (int number in resultGreaterThanFive)
// {
// Console.WriteLine(number);
// }
// Console.ReadKey();
// }
// private static IEnumerable<int> GetAllNumberGreaterThenTen(int[] numbers)
// {
// foreach (int number in numbers)
// {
// if (number > 10)
// {
// yield return number;
// }
// }
// }
// private static IEnumerable<int> GetAllNumberLessThenFive(int[] numbers)
// {
// foreach (int number in numbers)
// {
// if (number < 5)
// yield return number;
// }
// }
// private static IEnumerable<int> GetAllNumberGreaterThenFive(int[] numbers)
// {
// foreach (int number in numbers)
// {
// if (number > 5)
// yield return number;
// }
// }
//}
#endregion
}
Comments
Post a Comment