当尝试使用可选参数调用引用函数的委托时,iam得到 'Employee'没有重载匹配委托'System.Func
然后当我不需要传递参数时如何调用它。
Func<Employee> print = Employee;
Employee employee = print();
private Employee Employee(int employeeID = 1)
{
return new Employee();
}
答案 0 :(得分:1)
您可以通过提供可选参数的代表来实现此目的。
delegate Employee Print (int arg = 1);
Print EmployeeMethod = Employee;
EmployeeMethod();
Func和Action不支持可选参数,或者说它们没有这样定义。
public delegate TResult Func<in T, out TResult>(T arg);
答案 1 :(得分:1)
可选参数不会更改方法签名。您正在尝试将具有一个参数的方法转换为没有参数的委托 - 它们不兼容。
您可以使用将委托给您的方法的lambda,使用可选参数的默认值:
Func<Employee> print = () => Employee();
Employee employee = print();