0

我对编程很陌生,我已经被这个问题困扰了一段时间,我已经在整个互联网上搜索了这个问题的答案,但仍然对它为什么不起作用感到困惑。编译器说下面的代码不包含带有 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();
}
4

5 回答 5

5

声明一个接受 4 个参数的构造函数:

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

用法:

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

或将公共设置器添加到类属性,然后使用对象初始化器:

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

用法:

User user = new User { FirstName = "Joe", ... };
于 2013-03-03T01:33:56.240 回答
2

当您编写时,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;
}
于 2013-03-03T01:33:50.953 回答
1

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

于 2013-03-03T01:48:45.430 回答
1

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

您可以尝试将其添加到用户类中,在您的声明下方:

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

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

于 2013-03-03T01:47:21.473 回答
0

我见过一些人试图为构造函数提供与其拥有的字段数量相同的参数数量。但是,如果构造函数很可能已经存在,那么您需要做的就是:

Users user1 = new Users();
于 2017-12-14T10:06:26.417 回答