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

时间:2013-03-03 01:30:30

标签: c# .net constructor compiler-errors

我对编程很新,我现在已经坚持这个问题了一段时间,我已经在整个互联网上搜索了这个问题的答案,但仍然难以理解为什么它不起作用。编译器说下面的代码不包含一个带4个参数的构造函数?我不明白为什么?

代码是:

public class Users
{
    private int _ID;
    private string _FName;
    private string _LName;
    private string _Address;
    private string _Phone;

    public int ID
    {
        get { return _ID; }
    }

    public string FName
    {
        get { return _FName; }
    }

    public string LName
    {
        get { return _LName; }
    }

    public string Address
    {
        get { return _Address; }
    }

    public string Phone
    {
        get { return _Phone; }
    }
}

遇到问题的代码是:

public static void Insert(string FName, string LName, string Address, string Phone)
{
    Users newUser = new Users(FName, LName, Address, Phone);
    newUser.Save();
}

5 个答案:

答案 0 :(得分:4)

声明一个带有4个参数的构造函数:

class User
{
    public User(string firstName, string lastName, string address, string phone)
    {
       _fName = firstName;
       ....
    }
}

用法:

User user = new User("Joe", ...);

或将public setter添加到类属性,然后使用object initializer:

public string FirstName { get; set; } // notice public

用法:

User user = new User { FirstName = "Joe", ... };

答案 1 :(得分:1)

当您编写new Users(...)时,您正在调用Users类的构造函数。由于您尚未定义一个,因此默认值为零参数,而不是您使用的四个参数。

您可以使用默认构造函数并使用对象初始值设定项设置属性。为此,请替换为:

Users newUser = new Users(FName, LName, Address, Phone);

用这个:

Users newUser = new Users() { FName = FName, LName = LName, Address = Address, Phone = Phone };

或者,您可以添加一个带有四个参数的构造函数,如下所示:

public Users(string fName, string lName, string address, string phone)
{
    FName = fName;
    LName = lName;
    Address = address;
    Phone = phone;
}

答案 2 :(得分:1)

我对C#不是很有经验,但你的班级似乎没有声明构造函数。您正在声明变量FName,LName,Address和Phone,但它们永远不会获得任何值。

您可以尝试将此添加到声明下方的“用户”类中:

public Users(String fname, String lname, String address, String phone)
{
    FName = fname;
    LName = lname;
    Address = address;
    Phone = phone;
}

您也可以考虑更改“用户”的名称。只是用户'因为每个类的实例化代表一个用户,而不是它们的集合。

答案 3 :(得分:1)

你需要一个构造函数。它没有给出。必须写出来。

答案 4 :(得分:0)

我看到有些人试图为构造函数提供与其所具有的字段数量相同的参数。但是,如果构造函数已经存在,那么您需要做的就是:

Users user1 = new Users();
相关问题