可选参数,'Employee'没有重载匹配委托'System.Func <employee>

时间:2016-06-10 05:49:33

标签: c# generics

当尝试使用可选参数调用引用函数的委托时,iam得到 'Employee'没有重载匹配委托'System.Func

然后当我不需要传递参数时如何调用它。

    Func<Employee> print = Employee;
    Employee employee = print();

    private Employee Employee(int employeeID = 1)
    {
        return new Employee();
    }

2 个答案:

答案 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();