WhyDelegateRequired?

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