【问题标题】:Does not contain a constructor that takes 4 arguments?不包含带 4 个参数的构造函数?
【发布时间】:2013-02-17 08:32:36
【问题描述】:

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

【问题讨论】:

  • 你还没有为你的Users类声明一个constructor

标签: c# .net constructor compiler-errors


【解决方案1】:

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

Users user1 = new Users();

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        当您编写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;
        }
        

        【讨论】:

          【解决方案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", ... };
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-08-21
            • 1970-01-01
            • 2012-08-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-01-22
            相关资源
            最近更新 更多