不包含带2个参数的构造函数?

时间:2013-07-25 18:27:43

标签: c# class

我目前正在做一些类编码,并想知道我的项目出了什么问题?

class ContactPerson
{
    string name;
    ContactNo telNo;

    public ContactPerson(string in_Name, ContactNo in_No)
    {
        name = in_Name;
        telNo = new ContactNo();


    }
    public string getName()
    {
        return name;
    }
    public ContactNo getContactInfo()
    {
        return telNo;
    }
    public void setName(string in_Name)
    {
        name = in_Name;
    }
    public void setContactInfo (ContactNo in_No)
    {
        telNo = in_No;
    }
}

}

class ContactNo
{
    string contactType;
    string contactNo;

    public void setContactType(string in_Type)
    {
        contactType = in_Type;
    }
    public string getContactType()
    {
        return contactType;
    }
    public void setContactNo(string in_No)
    {
        contactNo = in_No;
    }
    public string getContactNo()
    {
        return contactNo;
    }

}

}

class Program
{
    static void Main(string[] args)
    {

        ContactNo telNo;
        telNo =   new ContactNo("Mobile No: ", 95656565);

        ContactPerson myFriend;
        myFriend = new ContactPerson("Fred Smith", telNo);
        string strName;
        strName = myFriend.getName();

        Console.WriteLine(" " + strName);
        ContactNo outContact;
        outContact = myFriend.getContactInfo();
        outContact.getContactType();
        Console.WriteLine(outContact);
        outContact.getContactNo();
        Console.WriteLine(outContact);

        Console.ReadLine();

    }
}

}

在课程班上 “telNo = new ContactNo(”Mobile No:“,95656565);” theres错误说不包含带有2个参数的构造函数 我可以知道为什么吗?

7 个答案:

答案 0 :(得分:6)

那是因为你没有在ContactNo类中包含两个参数的构造函数,正如错误所示。看看课程,你会发现那里没有构造函数。但是,你在ContactPerson类中有一个。

这一行:telNo = new ContactNo("Mobile No: ", 95656565); 正在调用ContactNo的构造函数,它接受两个参数:一个字符串和一个int。您没有设置为当前执行此操作的构造函数,而这正是您的错误所在。您可以通过添加

来创建一个
public ContactNo(string s, int n){
   //initializations
}

或那种性质的东西。或者,如果您使用字符串作为数字(看起来像),请将int n替换为string s2或您想要调用的任何内容。

答案 1 :(得分:1)

因为你没有联系没有带2个参数的构造函数。我猜你和其他有2个参数的课程混淆了

public ContactPerson(string in_Name, ContactNo in_No)

从您的代码中看起来您必须将其添加到您的班级 ContactNo

 public ContactNo(string type, string umber)
{
    contactType = type;
    contactNo = number;
}

答案 2 :(得分:-1)

public ContactNo(string type, string umber)
{
        contactType = type;
        contactNo = number;
}

在ContactNo Class中添加此内容。

您收到错误的原因是因为没有带两个参数的构造函数。

答案 3 :(得分:-1)

将以下内容添加到您的ContactNo类:

public ContactNo(string inType, string inNo)
{
   contactType = inType;
   contactNo = inNo;
}

答案 4 :(得分:-1)

你没有构造函数来获取2个参数。在ContactNo类中添加此构造函数

public ContactNo(string contactType, string contactNo)
{
    this.contactType = contactType;
    this.contactNo = contactNo;
}

答案 5 :(得分:-1)

您需要声明ContactNo类的构造函数。类只提供没有参数的默认构造函数。

您需要的构造函数如下:

public ContactNo(string contactType, string contactNo) {
    this.contactType = contactType;
    this.contactNo = contactNo;
}

答案 6 :(得分:-1)

由于您传递的是stringint,我认为您要创建新的ContactPerson,而不是ContactNo。但是,如果您真的想要ContactNo,请添加构造函数:

类ContactNo {     public string ContactType {get;组; }     public string ContactNo {get;组; }

public ContactNo(string type, string no)
{
    ContactType = type;
    ContactNo = no;
}

}

或(使用属性)将其初始化为:

ContactNo contact = { ContactType = "The type", ContactNo = "The No" };