C#中"this"引用
单词this是C#中的保留字,它允许一个对象指向它自己。在方法内部,this引用可以用于指向任何当前执行的对象。
例如:在一个叫做ChessPiece的类中,可以有个方法叫Move,它可能包含下列行:
if(this.position=piece.position)
result=false;
在这种情况下,this引用用来澄清是哪个position被引用了。this引用指向触发方法的对象。所以如果下面这行用
于触发方法,this引用指向firstshop:
firstshop.Move();
但是,如果另外一个对象用于触发方法,this引用就指向它。所以,如果使用了下面的调用,Move方法中的this引
用就指向secondshop:
secondshop.Move();
经常地,this引用用于区分构造函数的参数和它们相对应的同名的实例变量。例如:一个叫做Account类的构造函数
如下所示:
public Account(string owner, long account, double initial)
{
name=owner;
acctNumber=account;
balance=initial;
}
在编写这个构造函数时,我们特意为参数去了不同的名字来区分它们与实例变量name,accNumber,和balance。这个区分是任意的。构造函数分来可以用this引用写成如下所示:(这用更容易让人理解和接受)
public Account(string name, long acctNumber, double balance)
{
this.name=name;
this.acctNumber=acctNumber;
this.balance=balance;
}
例如:在一个叫做ChessPiece的类中,可以有个方法叫Move,它可能包含下列行:
if(this.position=piece.position)
result=false;
在这种情况下,this引用用来澄清是哪个position被引用了。this引用指向触发方法的对象。所以如果下面这行用
于触发方法,this引用指向firstshop:
firstshop.Move();
但是,如果另外一个对象用于触发方法,this引用就指向它。所以,如果使用了下面的调用,Move方法中的this引
用就指向secondshop:
secondshop.Move();
经常地,this引用用于区分构造函数的参数和它们相对应的同名的实例变量。例如:一个叫做Account类的构造函数
如下所示:
public Account(string owner, long account, double initial)
{
name=owner;
acctNumber=account;
balance=initial;
}
在编写这个构造函数时,我们特意为参数去了不同的名字来区分它们与实例变量name,accNumber,和balance。这个区分是任意的。构造函数分来可以用this引用写成如下所示:(这用更容易让人理解和接受)
public Account(string name, long acctNumber, double balance)
{
this.name=name;
this.acctNumber=acctNumber;
this.balance=balance;
}
在这个版本的构造函数(非静态的构造函数是在创建类的对象的时候被自动调用的)中,this引用特别指向对象的实例变量。赋值语句右边的变量指向形参。这个方法消除了为了变量取不同的但是等价的名字的需要。这种情况有事在其它方法中发生,但通常出现在构造函数中。



浙公网安备 33010602011771号