在调用方法的时,this可以自动的传递一个隐含参数,该参数是对调用对象(及方法调用所在的对象)的引用,该引用被称为this。因此this指向方法正在操作的对象。为理解this的含义首先查看一个程序,它创建一个名为Rect的类封装的矩形的宽和高的信息,并包含一个返回矩形面积的Area()方法。
using System;
calss Rect{
public int Width;//矩形的宽
public int Height//矩形的高
//构造函数为对象赋初值
public Rect(int w,int h){
Width=w;
Height=h;
}
//求矩形的面积
public int Area(){
return Width*Height;
}
}
class UseRect{
static void Main(){
Rect r1=new Rect(4,5); //实例化对象r1
Rect r2=new Rect(7,9);//实例化对象r2
console.writeLine("对象r1的面积为"+r1.Area());
console.writeLine("对象r2的面积为"+r2.Area());
}
}
在方法内可以直接访问类的其他成员,而不需要添加任何对象名和类名,因此在Area()方法中,语句:
return Width*Height;
表示直接调用对象的Width和Height的值相乘,然后返回结果,然而该语句也可以写成如下形式:
return this.Width*Height;
其中this指向调用Area()方法的对象,因此this.Width指向对象Width的副本,而this.Heightz指向对象Height的副本。例如如果调用Area()的对象为x,那么上述语句中的this指向。
也可以在构造函数中使用关键字this。在这种情况下,this指向正在构造的对象。例如在Rect()中语句
Width=w;
Height=h;
可以编写为如下形式:
this.Width=w;
this.Height=h;
下面给出使用this引用编写的Rect类:
using System;
calss Rect{
public int Width;//矩形的宽
public int Height//矩形的高
//构造函数为对象赋初值
public Rect(int w,int h){
this.Width=w;
this.Height=h;
}
//求矩形的面积
public int Area(){
return this.Width*Height;
}
}
class UseRect{
static void Main(){
Rect r1=new Rect(4,5); //实例化对象r1
Rect r2=new Rect(7,9);//实例化对象r2
console.writeLine("对象r1的面积为"+r1.Area());
console.writeLine("对象r2的面积为"+r2.Area());
}
}
this关键字有一些重要用途,例如,在C#语法中允许参数名和或局部变量名和实例变量名相同,此时局部变量名称会隐藏实例变量名称。这是可以通过this指向隐藏的实例变量,从而访问他。例如下面编写Rect()构造函数的方法是符合语法的。
public Rect(int Width,int Height){
this.Width=Width;
this.Height=Height;
}
在该实例中,参数的名称和实例变量的名称相同,因此隐藏了实例变量。但是可以用this来”揭开“实例变量。
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------