2012-08-03 69 views
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; 
    } 


} 

}

//问候

+0

尝试:这个(personalPhone,的String.Empty,string.Emtpy) – 2012-08-03 20:18:55

回答

2

此代码:

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

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

代码

this(personalPhone, string.Empty) 

的意思是“寻找对于需要两个参数在我的参数列表(在这种情况下,两个字符串),然后调用该构造此相同类的构造函数”的部分。

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

public Phone(string personalPhone) 
    : this(personalPhone, string.Empty, string.Empty) 
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 = "") 

这将让你消除“额外”的链接构造。

1

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

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

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

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) 
相关问题