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