可选参数,'Employee'匹配委托"System.Func<Employee>"无重载



当尝试调用引用带有可选参数的函数的委托时,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();

相关内容

最新更新