我有一个 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/