2013-03-03 120 views
0

我对编程相当陌生,我一直在这个问题上停留了一段时间,我已经在整个互联网上搜索了这个问题的答案,但仍然难以理解它为什么不起作用。编译器说下面的代码不包含带4个参数的构造函数?我不明白为什么?不包含带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

您还没有宣布[构造](http://msdn.microsoft.com/en-us/library/vstudio/ace5hbzh .aspx)为您的'用户'类。 – 2013-03-03 01:31:51

回答

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; 
} 
4

声明构造需要4个参数:

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

用法:

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

或公共setter方法添加到类的属性,然后使用对象初始化:

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

用法:

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

我不是很有经验的C#,但是你的类似乎没有声明构造函数。你正在声明变量FName,LName,Address和Phone,但他们从来没有得到任何价值。

你可以尝试添加该给类用户,下面的声明:

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

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

1

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

0

我见过一些人试图给一个构造函数的参数的数量相同的字段数量。但是,如果构造在所有的可能性已经存在,所有你需要做的是:

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