问题描述
//先看代码吧!publicclassUsers{privateint_userid;privatestring_username;privatestring_userpwd;publicintUserId{get{returnthis._userid;}set{this._userid=value;}}publicstringUserName{get{returnthis._username;}set{this._username=value;}}publicstringUserPwd{get{returnthis._userpwd;}set{this._userpwd=value;}}publicUsers(){////TODO:在此处添加构造函数逻辑//}publicUsers(intUserId,stringUserName,stringUserPwd){this._userid=UserId;this._username=UserName;this._userpwd=UserPwd;}publicUsers(SqlDataReaderDr){this._userid=Convert.ToInt32(Dr["userid"]);this._username=Dr["UserName"].ToString();this._userpwd=Dr["UserPwd"].ToString();}publicstaticboolUpdataUser(UserssingleUser){boolFlage=true;stringprocName="dbo.UpdateUser";SqlParameter[]prams={newSqlParameter("@userid",SqlDbType.Int),newSqlParameter("@username",SqlDbType.VarChar,50),newSqlParameter("@userpwd",SqlDbType.VarChar,100)};prams[0].Value=singleUser.UserId;prams[1].Value=singleUser.UserName;prams[2].Value=singleUser.UserPwd;intintResult=DataBase.RunExcute(procName,prams);if(intResult>0){Flage=false;}returnFlage;}}这个类是和GridView绑定的执行更新当前行操作!我现在想问的是:publicUsers(SqlDataReaderDr){this._userid=Convert.ToInt32(Dr["userid"]);this._username=Dr["UserName"].ToString();this._userpwd=Dr["UserPwd"].ToString();}这个构造函数在什么时候被调用了?是不是当这个对象UserssingleUser一建立的时候所有的构造函数都被调用了!?因为在以前我看一些文章的时候见构造函数都是有选择性的调用。例如:privateint_userid;privatestring_username;publicUsers(){//默认构造函数}publicUsers(intUserId,stringUserName){this._userid=UserId;this._username=UserName;}UsersuserSingle=newUsers()Console.writeLine("{0}",userSingle._userid)//这个时候返回0;用的是默认构造函数初试化变量;UsersuserSingle=newUsers(1,"22222")Console.writeLine("{0}",userSingle._userid)//这个时候返回的是1;用的是重新构造过的构造函数;但是,象上面我的问题是,参数从GridView传递过来的时候我看不出他什么时候用到了这个构造函数publicUsers(SqlDataReaderDr){this._userid=Convert.ToInt32(Dr["userid"]);this._username=Dr["UserName"].ToString();this._userpwd=Dr["UserPwd"].ToString();}疑惑忘高手帮帮忙!
解决方案
解决方案二:
publicUsers(SqlDataReaderDr)应该是在读数据库的时候调用的,用到的蚕食是sqldatareader类型,可以看看数据库连接和查询的模块