2

我正在尝试创建链式构造函数,但是我不擅长它,需要一些帮助!我在一个构造函数中收到一条消息,告诉我没有接受两个参数的构造函数。?

这是什么意思?我需要它来处理从另一个班级发送的 3 个字符串,这导致我进入第二个问题,那就是我不能从我的另一个班级调用它...我已经尝试了所有方法,但我无法做到:( 我觉得关于构造函数,我缺少一些重要的东西,但我相信有人可以以正确的方式指出我!!请我可以在这里使用任何和所有的帮助!!!我已经阅读了关于这个主题的 C# 书籍,但它们并没有多大帮助我有谷歌,而且有很多例子,但没有一个对我来说真的很有意义,因为我认为我的代码可以工作。

这是我的班级,我有需要向其发送变量的构造函数。

  public class Phone
  {
    //Private Phone
    private string m_persPhone;
    //Other Phone
    private string m_otherPhone;
    //Work Phone
    private string m_privatePhone;


    public Phone()            
    {
    }

    public Phone(string personalPhone)
        : this(personalPhone, string.Empty)     //<---Problem is HERE...
    {
    }    

    public Phone(string personalPhone, string otherPhone, string privatePhone)
    {
         m_persPhone = personalPhone;
         m_otherPhone = otherPhone;
         m_privatePhone = privatePhone;
    }

    public string personalPhone
    {
        //Personal Phone
        get { return m_persPhone; }

        set { m_persPhone = value; }
    }

    public string otherPhone
    {
        //Other Phone
        get { return m_otherPhone; }

        set { m_otherPhone = value; }
    }

    public string privatePhone
    {
        //Private Phone
        get { return m_privatePhone; }

        set { m_privatePhone = value; }
    }

    public string GetToStringItemsHeadings
    {
        get { return string.Format("{0,-20} {1, -20} {2, -20}", "Personal Phone", "Other Phone", "Private Phone"); }
    }

    public override string ToString()
    {
        string strOutPhone = string.Format("{0,-20} {1, -20} {2, -20}", m_persPhone, m_otherPhone, m_privatePhone);
        return strOutPhone;
    }


}

}

//问候

4

4 回答 4

2

这段代码:

public Phone(string personalPhone)
    : this(personalPhone, string.Empty)

正在寻找一个带有两个字符串参数的构造函数。

代码部分

this(personalPhone, string.Empty)

意思是“为同一个类寻找一个构造函数,它接受我的参数列表中的两个参数(在本例中是两个字符串),然后调用该构造函数”。

但是,您没有定义一个。您可以像这样使用带有三个字符串参数的那个:

public Phone(string personalPhone)
    : this(personalPhone, string.Empty, string.Empty)
于 2012-08-03T20:18:41.543 回答
2

你有三个构造函数:

public Phone()            

public Phone(string personalPhone)
    : this(personalPhone, string.Empty)     //<---Problem is HERE...

public Phone(string personalPhone, string otherPhone, string privatePhone)

这些都没有两个字符串,所以你会得到错误。

您可以通过传递第三个字符串来修复它:

public Phone(string personalPhone)
    : this(personalPhone, string.Empty, string.Empty)

然后它将链接到您的最后一个构造函数。

请注意,您还可以考虑将可选参数与单个构造函数一起使用:

public Phone(string personalPhone, string otherPhone = "", string privatePhone  = "")

这将使您消除“额外的”链式构造函数。

于 2012-08-03T20:18:49.153 回答
2

这是什么意思?

正是它所说的。这里:

: this(personalPhone, string.Empty)

您正在尝试链接到可以接受两个字符串的构造函数。但这些是您定义的构造函数签名:

public Phone()
public Phone(string personalPhone)
public Phone(string personalPhone, string otherPhone, string privatePhone)

您希望链接到哪些?这些都没有两个参数。

我怀疑你想要:

: this(personalPhone, string.Empty, string.Empty)
于 2012-08-03T20:19:38.857 回答
1

您的类只有 3 个构造函数,并且没有一个带两个参数。我认为您的意思是基类初始化看起来像这样:

    : this(personalPhone, string.Empty, string.Empty)

(注意它链接到 3 参数构造函数)。

于 2012-08-03T20:19:09.500 回答