C#语法问题 this的用法

来源:百度知道 编辑:UC知道 时间:2024/05/27 18:33:21
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"

你这里声明了一个类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所调用的是本类的实例化的该对象,对本类的其他实例没有影响。

get { return this._userid; }
set { this._userid = value; }
这里this是指本类中的。一般写代码的时候可以不用写this。