链式构造函数找不到任何带两个参数的东西?

时间:2012-08-03 20:16:43

标签: c#

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

这是什么意思?我需要它来处理从另一个类发送的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 个答案:

答案 0 :(得分:2)

此代码:

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

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

代码部分

this(personalPhone, string.Empty)

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

但是,您没有定义一个。您可以使用带有三个字符串参数的那个,如下所示:

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

答案 1 :(得分: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)

然后链接到你的最后一个构造函数。

请注意,您也可以考虑将optional arguments与单个构造函数一起使用:

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

这可以让你消除“额外的”链式构造函数。

答案 2 :(得分: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)

答案 3 :(得分:1)

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

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

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