可选参数必须出现在c#中的所有必需参数之后

时间:2014-12-05 13:17:03

标签: c# optional-parameters

方法1

public List<IndentItems> GetIndentsByStatus(string projectAddress, string jobAddress, string currentStatus,string ddlevent)    
{    
    List<IndentItems> indentItems =null;
    indentItems = GetIndentFilledInfo(filterdReports, false,null ,ddlevent);
    return indentItems;    
}

方法2

public List<IndentItems> GetIndentFilledInfo(List<SurveyFeedback> surveyFeedbacks, bool hasupdate, string indentType = null,string ddlevent)    
{
}

从Method1我调用第二种方法,在方法2中调用EventID我会得到数据。但它显示编译器错误消息:

  

CS1737:可选参数必须出现在所有必需参数之后。

2 个答案:

答案 0 :(得分:8)

您需要将可选参数移动到参数列表的末尾:

来自MSDN的

  

可选参数在参数列表的末尾定义,   在任何所需参数之后。如果调用者提供参数   它必须提供一系列可选参数中的任何一个   所有前面可选参数的参数。以逗号分隔的差距   在参数列表中不受支持。例如,在下面   代码,实例方法ExampleMethod定义了一个必需和   两个可选参数。

public List<IndentItems> GetIndentFilledInfo(
        List<SurveyFeedback> surveyFeedbacks, 
        bool hasupdate,
        string ddlevent,
        string indentType = null)

更多阅读Here

答案 1 :(得分:2)

可选参数应该在所有方法参数之后:

public List<IndentItems> GetIndentFilledInfo(
    List<SurveyFeedback> surveyFeedbacks, 
    bool hasupdate, 
    string ddlevent,
    string indentType = null)    
{
    // Codes here
}

MSDN