C# Func 委托(delegate)结合 lambda 表达式不正确

标签 c# lambda delegates func

我有一个 Employee 类,它有一些基本参数,还有一个 employees 类,它有一个员工对象列表。我想在员工类中使用 func 委托(delegate),以便能够在主类中使用以下 lambda 表达式。我想我这里有一些语法错误...我收到以下错误消息:“无法将 lambda 表达式转换为类型‘Employee’,因为它不是委托(delegate)类型”。

有人知道我做错了什么吗?

非常感谢你们!!

static void Main(string[] args)
        {
            Employees lijst = new Employees();
            lijst.Add(new Employee("B1", 200));
            lijst.Add(new Employee("B2", 100));
            lijst.Add(new Employee("B3", 300));

            lijst.Wijzig((Employee b) => b.Salary += 100);

            Console.ReadKey();
        }


class Employee
    {
        public String Name { get; set; }
        public int Salary { get; set; }



        public Employee(String Name, int Salary)
        {
            this.Name = Name;
            this.Salary = Salary;

        }
    }


class Employees
    {
        public Func<Employee, int> Wijzig = new Func<Employee, int>(Change);
        private ArrayList _lijst = new ArrayList();

        public void Add(Employee e)
        {
            _lijst.Add(e);
        }

        static int Change(Employee b)
        {

            return 0;
        }
    }

最佳答案

这是我的解决方案,主要功能没有变化:

    static void Main(string[] args)
    {
        Employees lijst = new Employees();
        lijst.Add(new Employee("B1", 200));
        lijst.Add(new Employee("B2", 100));
        lijst.Add(new Employee("B3", 300));

        lijst.Wijzig((Employee b) => b.Salary += 100);

        lijst.Print();

        Console.ReadKey();
    }


    class Employee
    {
        public String Name { get; set; }
        public int Salary { get; set; }

        public Employee(String Name, int Salary)
        {
            this.Name = Name;
            this.Salary = Salary;
        }
    }


    class Employees
    {
        // [Delete]
        // public Func<Employee, int> Wijzig = new Func<Employee, int>(Change);
        private ArrayList _lijst = new ArrayList();

        public void Add(Employee e)
        {
            _lijst.Add(e);
        }

        // [Delete]
        //static int Change(Employee b)
        //{
        //    return 0;
        //}

        // [New]
        public void Wijzig(Func<Employee, int> func) 
        {
            foreach (Employee e in _lijst)
            {
                func(e);
            }
        }

        public void Print() 
        {
            foreach (Employee e in _lijst)
            {
                Console.WriteLine(e.Name + "\t" + e.Salary);
            }
        }
    }

关于C# Func 委托(delegate)结合 lambda 表达式不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44588070/

相关文章:

c# - 强制创建 WPF 窗口的 native Win32 句柄

Java 8 : Filtering Map<Long, Person> 按人员状态列出 <Long>

c# - Delegate.Combine 和 lambda 表达式

c# - 将委托(delegate)从一个类(class)传递到另一个类(class)

iphone - iOS 自定义委托(delegate)为 null

c# - Url.Action 不适用于非标准 MVC 路由

c# - IEnumerable 现在是否比 IReadOnlyList 更防水?

c# - Json.NET - 将多个对象属性自定义反序列化为单一类型列表?

c# - LINQ 表达式中的 String.IsNullOrWhiteSpace

c# - 未应用自定义 lambda 表达式