static void main()
        {
            List <EmployeeD> empList = new List <EmployeeD>();

            empList.Add(new EmployeeD()
            {
                ID = 101, Name = "Adi", Salary = 20000, Experience = 2
            });
            empList.Add(new EmployeeD()
            {
                ID = 102, Name = "Fasil", Salary = 25000, Experience = 5
            });
            empList.Add(new EmployeeD()
            {
                ID = 103, Name = "Jishnu", Salary = 10000, Experience = 2
            });
            empList.Add(new EmployeeD()
            {
                ID = 104, Name = "Ashraf", Salary = 20000, Experience = 6
            });

            //instance of the delegate
            IsPromotable isPromotable = new IsPromotable(Promote);

            //calling the function
            EmployeeD.PromoteEmployee(empList, isPromotable);
        }
 //This is the function which does the logic for us
 //It has the same signature as that of the delegate
 public static bool Promote(EmployeeD emp)
 {
     if (emp.Experience >= 5)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }