[英]Does not contain a constructor that takes 4 arguments?
我對編程還很陌生,現在已經在這個問題上停留了一段時間,我在整個互聯網上都在尋找該問題的答案,但是對於為什么它不起作用仍然感到困惑。 編譯器說下面的代碼不包含帶有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個參數的構造函數:
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", ... };
當您編寫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;
}
我對C#不太熟悉,但是您的類似乎沒有聲明構造函數。 您在聲明變量FName,LName,Address和Phone,但它們從未獲得任何值。
您可以嘗試將其添加到聲明下面的Users類中:
public Users(String fname, String lname, String address, String phone)
{
FName = fname;
LName = lname;
Address = address;
Phone = phone;
}
您可能還考慮將“用戶”的名稱更改為“用戶”,因為類的每個實例都代表一個用戶,而不是它們的集合。
您需要一個構造函數。 沒有給出。 必須寫出來。
我見過有人試圖給構造函數提供與其數量相同的參數。 但是,如果構造函數很可能已經存在,那么您需要做的就是:
Users user1 = new Users();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.