可以使用构造函数链来代替重载的构造函数

时间:2009-12-11 05:57:31

标签: c#

我在Windows窗体中有一个构造函数

public frmSecondarySEC(int intPrimaryDocumentId, int intSecondaryDocumentId, string strStateCode, int intCountyId, string strPrimaryDocTypeName, string strPrimaryDocTypeCode, string strDealName, string strLoanNumber, int intDealId, string strDealType, string strCountyName, bool blIsFileReview)
{

}

现在我需要将一个额外的参数传递给这个构造函数。为此,我创建了这个构造函数的重载版本,以便使用原始构造函数的其他类不会分解。只是添加了新参数。

public frmSecondarySEC(int intPrimaryDocumentId, int intSecondaryDocumentId, string    strStateCode, int intCountyId, string strPrimaryDocTypeName, string strPrimaryDocTypeCode, string strDealName, string strLoanNumber, int intDealId, string strDealType, string strCountyName, bool blIsFileReview,string primaryDocumentTitle)
{
}

现在,由于他们共享commom初始化代码,我尝试了构造函数链接

public frmSecondarySEC(int intPrimaryDocumentId, int intSecondaryDocumentId, string strStateCode, int intCountyId, string strPrimaryDocTypeName, string strPrimaryDocTypeCode, string strDealName, string strLoanNumber,int intDealId, string strDealType, string strCountyName, bool blIsFileReview) : this(int intPrimaryDocumentId, int intSecondaryDocumentId, string strStateCode, int intCountyId, string strPrimaryDocTypeName, string strPrimaryDocTypeCode, string strDealName, string strLoanNumber, int intDealId, string strDealType, string strCountyName, bool blIsFileReview)
{
}

但是我在这部分时遇到错误

:this(int intPrimaryDocumentId

无效的表达式术语'int'。我使用错误的构造函数链接实现,或者可以通过其他方式完成。我想防止重复代码。请建议。

3 个答案:

答案 0 :(得分:6)

它知道类型,只需传递参数。

:this(intPrimaryDocumentId)

答案 1 :(得分:1)

你可以像这样打电话给另一个:

public M (int k) { }

public M () : this(1) { }

因此,您不会重新定义变量,只需将其传入,就像调用方法一样。

答案 2 :(得分:1)

链接构造函数时,不再指定类型。它应该是:

public frmSecondarySEC(int intPrimaryDocumentId, int intSecondaryDocumentId, string strStateCode, int intCountyId, string strPrimaryDocTypeName, string strPrimaryDocTypeCode, string strDealName, string strLoanNumber,int intDealId, string strDealType, string strCountyName, bool blIsFileReview)
    : this(intPrimaryDocumentId, intSecondaryDocumentId, strStateCode, intCountyId, strPrimaryDocTypeName, strPrimaryDocTypeCode, strDealName, strLoanNumber, intDealId, strDealType, strCountyName, blIsFileReview)

此外,您应该考虑是否所有这些参数都是必要的。严重。