C#构造函数的重载的几种方式

来源:互联网 发布:c编程视频教程 编辑:程序博客网 时间:2024/06/04 19:02

今天工作中遇到了点小麻烦,关于构造函数重载的问题,以前方法重载的时候直接使用相同的函数名传入不同的参数即可。如下面代码:

 1     public class UserData
2 {
3
4
5 public bool UpdateUser(string username, string password, int age, int sex,int id)
6 {
7 return true;
8 }
9
10 public bool UpdateUser(string username,int id)
11 {
12 return UpdateUser(username, "", 0, 0,id);
13 }
14 }

当构造函数重载时使用上面的方法就不行了,会报错。如图:

其中原因我就不多解释了,构造函数是用来实例化的。经过几次尝试终于找到了办法。

 1     public class User
2 {
3 /// <summary>
4 /// 初始化一个空的用户类实例。
5 /// </summary>
6 public User()
7 {
8
9 }
10
11 /// <summary>
12 /// 初始化一个包含用户信息的用户类实例。
13 /// </summary>
14 /// <param name="username">用户名</param>
15 /// <param name="password">密码</param>
16 /// <param name="age">年龄</param>
17 /// <param name="sex">性别</param>
18 public User(string username, string password, int age, int sex)
19 {
20 this._username = username;
21 this._password = password;
22 this._age = age;
23 this._sex = sex;
24 }
25
26 /// <summary>
27 /// 初始化一个包含用户名和密码的用户类实例。
28 /// </summary>
29 /// <param name="username"></param>
30 /// <param name="password"></param>
31 public User(string username, string password)
32 : this(username,password,0,0)
33 {
34 }
35
36 private int _id;
37 private string _username;
38 private string _password;
39 private int _age;
40 private int _sex;
41
42
43 public int Id
44 {
45 get { return _id; }
46 set { _id = value; }
47 }
48
49 public int Sex
50 {
51 get { return _sex; }
52 set { _sex = value; }
53 }
54
55 public int Age
56 {
57 get { return _age; }
58 set { _age = value; }
59 }
60
61 public string Password
62 {
63 get { return _password; }
64 set { _password = value; }
65 }
66
67 public string Username
68 {
69 get { return _username; }
70 set { _username = value; }
71 }

 

0 0