作业帮 > 综合 > 作业

C#语法问题 this的用法

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/10 06:30:11
C#语法问题 this的用法
public class Users
{
private int _userid;
private string _username;
private string _userpwd;
public int UserId
{
get { return this._userid; }
set { this._userid = value; }
}
public string UserName
{
get { return this._username; }
set { this._username = value; }
}
public string UserPwd
{
get { return this._userpwd; }
set { this._userpwd = value; }
}
public Users()
{
//
// TODO:在此处添加构造函数逻辑
//
}
public Users(int UserId,string UserName,string UserPwd)
{
this._userid = UserId;
this._username = UserName;
this._userpwd = UserPwd;
}
public Users(SqlDataReader Dr)
{
this._userid = Convert.ToInt32(Dr["UserId"]);
this._username = Dr["UserName"].ToString();
this._userpwd = Dr["UserPwd"].ToString();
}
上面代码中用了很多this 谁能讲一下啊是什么用意 在什么情况下一定要加上this
不要复制给我帮助中公式般回答 通俗的讲一下this的具体用法
你这里声明了一个类Users:
public class Users
那么,在类中的代码里使用this,指代的就是 Users 这个类.
比如说this._userid,指的就是Users类下面的成员int _userid(你已经在代码里声明过了成员int _userid:private int _userid;)
至于在什么情况下一定要加上this,我们看一下这个代码(以你的代码为例稍加修改).
public Users(SqlDataReader Dr)
{
int _userid;
_userid = 0;
this._userid = Convert.ToInt32(Dr["UserId"]);
this._username = Dr["UserName"].ToString();
this._userpwd = Dr["UserPwd"].ToString();
}
这个方法是你类里的构造函数之一,其中我加了一个局部变量_userid.
那么这个局部变量就和类里的成员_userid重名了.单独使用_userid = 0;进行操作是操作的是Users(SqlDataReader Dr)方法里的局部变量_userid,而this._userid = Convert.ToInt32(Dr["UserId"]);操作的是本类的成员_userid而不是局部变量.
但如果不存在重名时可以不用加this,不过作为一种良好的编程习惯,建议访问类成员时都使用this进行定位.一防日后加入局部变量时发生重名导致操作错误.
注:this所调用的是本类的实例化的该对象,对本类的其他实例没有影响.