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

方法1

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

方法2

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

从Method1我调用第二个方法,在method2中基于EventID我将获取数据。 但它显示编译器错误消息:

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

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

来自MSDN:

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

 public List GetIndentFilledInfo( List surveyFeedbacks, bool hasupdate, string ddlevent, string indentType = null) 

更多阅读

可选的params应该在你们所有的方法参数之后:

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

MSDN