Почему важно делегировать полномочия? Есть ли какая-то задача, которую мы не можем выполнить без использования делегата?
Я новичок в программировании. Я не могу понять, почему мы создаем делегат. Пожалуйста, помогите мне с вашими ценными ответами. Я попробовал одну небольшую программу с помощью делегата, а затем попытался написать ту же логику без использования делегата. Если и без делегата мы можем выполнить свою задачу, то какой смысл в делегировании. Пожалуйста, подумайте о следующем кодировании с делегатом и без него.
Что я уже пробовал:
С Делегатом:
using System; using System.Collections.Generic; class Pragim { public static void Main() { List<employee> empList = new List<employee>(); empList.Add(new Employee() { ID = 1, Name = "A", Salary = 10000, Experience = 3 }); empList.Add(new Employee() { ID = 1, Name = "B", Salary = 11000, Experience = 7 }); empList.Add(new Employee() { ID = 1, Name = "C", Salary = 12000, Experience = 3 }); empList.Add(new Employee() { ID = 1, Name = "D", Salary = 13000, Experience = 5 }); empList.Add(new Employee() { ID = 1, Name = "E", Salary = 14000, Experience = 4 }); IsPromotable isPromotable = new IsPromotable(Promote); Employee.PromoteEmployee(empList, isPromotable); Console.ReadLine(); } public static bool Promote(Employee emp) { if (emp.Experience >= 5) { return true; } else { return false; } } } delegate bool IsPromotable(Employee empl); class Employee { public int ID { get; set; } public string Name { get; set; } public int Salary { get; set; } public int Experience { get; set; } public static void PromoteEmployee(List<employee> employeeList, IsPromotable IsEligibleToPromote) { foreach (Employee employee in employeeList) { if (IsEligibleToPromote(employee)) { Console.WriteLine(employee.Name + " has been promoted"); } } } }
Без Делегата:
using System; using System.Collections.Generic; class Pragim { public static void Main() { List<employee> empList = new List<employee>(); empList.Add(new Employee() { ID = 1, Name = "A", Salary = 10000, Experience = 3 }); empList.Add(new Employee() { ID = 1, Name = "B", Salary = 11000, Experience = 7 }); empList.Add(new Employee() { ID = 1, Name = "C", Salary = 12000, Experience = 3 }); empList.Add(new Employee() { ID = 1, Name = "D", Salary = 13000, Experience = 5 }); empList.Add(new Employee() { ID = 1, Name = "E", Salary = 14000, Experience = 4 }); Employee.PromoteEmployee(empList); Console.ReadLine(); } public static bool Promote(Employee emp) { if (emp.Experience >= 5) { return true; } else { return false; } } } class Employee { public int ID { get; set; } public string Name { get; set; } public int Salary { get; set; } public int Experience { get; set; } public static void PromoteEmployee(List<employee> employeeList) { foreach (Employee employee in employeeList) { if (Pragim.Promote(employee)) { Console.WriteLine(employee.Name + " has been promoted"); } } } }