如何在我的场景中编写匿名方法

时间:2017-05-10 11:37:16

标签: c#-2.0

让我告诉你所有我在我的代码中没有得到任何类型的错误它工作得很好,我在这里知道一个关于匿名方法的具体事情。首先,这是我的代码。我有一个名为Employee的课程。其中有三个自动实现的属性和一个返回git奖金工资的员工姓名的函数,我使用委托,所以这个函数没有逻辑,这就是这个类和方法可重用的原因。

class Employee
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Salary { get; set; }
        public static void BonusForEmp(List<Employee> emp, Bonus Isavailable)
        {
            foreach (Employee e in emp)
            {
                if (Isavailable(e))
                {
                    Console.WriteLine(e.Name + " got bonus");
                }
            }
        }

    }

     delegate bool Bonus(Employee Employes); // Delegate

这是我的主要方法,我在其中创建员工列表并执行所有步骤,例如创建实例并将方法作为参数传递。

List<Employee> EmpList = new List<Employee>();
            EmpList.Add(new Employee() { Id = 1, Name = "A", Salary = 12000});
            EmpList.Add(new Employee() { Id = 2, Name = "B", Salary = 7999 });
            EmpList.Add(new Employee() { Id = 3, Name = "C", Salary = 1999 });
            EmpList.Add(new Employee() { Id = 4, Name = "D, Salary = 20000});
            Bonus B = new Bonus(BonusAvailabeFor); //instance of dlegate and pasing method name as an argument
            Employee.BonusForEmp(EmpList, B); //using 
            Console.ReadLine();

所以你们所有人都在想我的方法(BonusAvailableFor)在哪里我完成了与委托签名相匹配的所有逻辑工作?这是

 public static bool BonusAvailabeFor(Employee eml) // the function with same signature of the delegate here we use our logic.
        {
            if (eml.Salary > 8000)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

所以这段代码工作非常好,并返回员工的姓名,其薪水&gt; 8000。 我只是在某处读取了一个内联表达式的匿名方法,可以在任何需要委托类型的地方使用。它为我们提供了一种创建委托实例的方法,而无需编写单独的方法..定义看起来很棒它会减少我的行代码,如果我可以在我的场景中实现这一点,那么我怎样才能实现它? &lt; ===(我的问题)

0 个答案:

没有答案