有没有办法在2.0中做C#4.0可选参数?

Jon*_*els 1 c# overloading

我有一个接受两个参数的方法,现在我需要传递一个额外的参数,但调用它的所有其他代码可能不会传递第三个参数.下面是一个丑陋的黑客,但我只是不熟悉重载的过程,我们陷入.NET 2.0,所以虽然这工作,我不禁感到它的错误.

   public static void AddPlanFunds(ParticipantResultsPlan planNode, Plan plan)
    {
        AddPlanFunds(planNode, plan, -1);
    }
    public static void AddPlanFunds(ParticipantResultsPlan planNode, Plan plan, int participantId)
    {
        planNode.PlanFunds = new CommonPlanFunds();

        // Add single class funds
        AddSingleClassFunds(planNode.PlanFunds, plan);

        // Add portfolios
        AddPortfolios(planNode.PlanFunds, plan,participantId);
    }
Run Code Online (Sandbox Code Playgroud)

我该怎么做超载?

谢谢!

SLa*_*aks 6

您的代码是执行此操作的标准方法; 这不是一个丑陋的黑客.

但是,你应该考虑采取int?和传递null而不是-1.

您可以使用属性在C#2中创建可选参数,以便从C#4调用.