今天工作中遇到了点小麻烦,关于构造函数重载的问题,以前方法重载的时候直接使用相同的函数名传入不同的参数即可。如下面代码:
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 ///4 /// 初始化一个空的用户类实例。 5 /// 6 public User() 7 { 8 9 } 10 11 ///12 /// 初始化一个包含用户信息的用户类实例。 13 /// 14 /// 用户名 15 /// 密码 16 /// 年龄 17 /// 性别 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 ///27 /// 初始化一个包含用户名和密码的用户类实例。 28 /// 29 /// 30 /// 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 }