主题:C#的this保留字
C#的this保留字
保留字this仅限于在构造函数、类的方法和类的实例中使用,它有以下含义:
●在类的构造函数中出现的this作为一个值类型,它表示对正在构造的对象本身的引用。
●在类的方法中出现的this作为一个值类型,它表示对调用该方法的对象的引用。
●在结构的构造函数中出现的this作为一个变量类型,它表示对正在构造的结构的引用。
●在结构的方法中出现的this作为一个变量类型,它表示对调用该方法的结构的引用。
除此之外,在其它地方使用this保留字都是不合法的。
下面的代码演示了如何使用this保留字。
using System;
class A
{
public int x;
public void Main()
{
x=5;
Console.WriteLine("The value of x is"{0}",x);
Console.WriteLine("The value of this.x is:{0}",this.x);
}
}程序运行的结果应该是:
The value of x is:5
The value of this.x is:5
注意:如果你是一名C++程序员,在使用C#是请忘记C++中的this指针,也忘掉诸如this->和::之类的符号。只要有名字嵌套的概念,你使用“.”就足够了。
下面再举一个例子来说明this的用法。
using System;
class Fact
{
int x;
public int GetFact()
{
float temp;
int save=x;
int a=1;
while(x>a)
{
a++;
temp=this.x/a;
x/=a;
if((float)x!=temp){
return -1;
}
}
swap(this.x,save);
return save;
}
}程序用于求某个整数是否为另一个整数的阶乘。如果是,类Fact的方法是GetFact()返回该整数;否则,GetFact()返回-1。
实际上,在C#内部,this被定义为一个常量。因此,使用this++,this--这样的语句都是不合法的。但是,this可以作为返回值来使用。
我们知道,在Windows操作系统中,当前窗口问题被加亮显示,我们称该窗口被激活。例如,在Microsoft Word中,我们可以同时打开多个文档。每个文档窗口作为Microsoft Word主窗口的一个子窗口,其中只有一个子窗口是当前激活的窗口。如果Microsoft Word没有打开任何文档,则主窗口作为当前激活的窗口。
下面的例子中,我们声明了一个窗口类Window,假设Window一次最多可以同时打开五个子窗口。Window的方法GetActiveWindow()用于返回当前激活的窗口。如果打开了子窗口,则返回该子窗口的实例,否则返回主窗口本身。本文发表于www.bianceng.cn(编程入门网)
using System;
class Window
{
public Window[] m_ChildWindow=new Window[5]; //子窗口
public bool IsHaveChild=false; //是否拥有子窗口
public bool IsActive; //窗口是否被激活
public Window GetActiveWindow()
{
if(IsHaveChild==false){
IsActive=true;
return this; //返回窗口本身
}
else{
for(int i=0;i<5;i++){
if(m_ChildWindow[i].IsActive==true{
return m_ChildWindow[i];
//返回激活的子窗口
}
}
}
return this;
}
}
[url]http://www.gobenetzsfcp.cn[/url]
保留字this仅限于在构造函数、类的方法和类的实例中使用,它有以下含义:
●在类的构造函数中出现的this作为一个值类型,它表示对正在构造的对象本身的引用。
●在类的方法中出现的this作为一个值类型,它表示对调用该方法的对象的引用。
●在结构的构造函数中出现的this作为一个变量类型,它表示对正在构造的结构的引用。
●在结构的方法中出现的this作为一个变量类型,它表示对调用该方法的结构的引用。
除此之外,在其它地方使用this保留字都是不合法的。
下面的代码演示了如何使用this保留字。
using System;
class A
{
public int x;
public void Main()
{
x=5;
Console.WriteLine("The value of x is"{0}",x);
Console.WriteLine("The value of this.x is:{0}",this.x);
}
}程序运行的结果应该是:
The value of x is:5
The value of this.x is:5
注意:如果你是一名C++程序员,在使用C#是请忘记C++中的this指针,也忘掉诸如this->和::之类的符号。只要有名字嵌套的概念,你使用“.”就足够了。
下面再举一个例子来说明this的用法。
using System;
class Fact
{
int x;
public int GetFact()
{
float temp;
int save=x;
int a=1;
while(x>a)
{
a++;
temp=this.x/a;
x/=a;
if((float)x!=temp){
return -1;
}
}
swap(this.x,save);
return save;
}
}程序用于求某个整数是否为另一个整数的阶乘。如果是,类Fact的方法是GetFact()返回该整数;否则,GetFact()返回-1。
实际上,在C#内部,this被定义为一个常量。因此,使用this++,this--这样的语句都是不合法的。但是,this可以作为返回值来使用。
我们知道,在Windows操作系统中,当前窗口问题被加亮显示,我们称该窗口被激活。例如,在Microsoft Word中,我们可以同时打开多个文档。每个文档窗口作为Microsoft Word主窗口的一个子窗口,其中只有一个子窗口是当前激活的窗口。如果Microsoft Word没有打开任何文档,则主窗口作为当前激活的窗口。
下面的例子中,我们声明了一个窗口类Window,假设Window一次最多可以同时打开五个子窗口。Window的方法GetActiveWindow()用于返回当前激活的窗口。如果打开了子窗口,则返回该子窗口的实例,否则返回主窗口本身。本文发表于www.bianceng.cn(编程入门网)
using System;
class Window
{
public Window[] m_ChildWindow=new Window[5]; //子窗口
public bool IsHaveChild=false; //是否拥有子窗口
public bool IsActive; //窗口是否被激活
public Window GetActiveWindow()
{
if(IsHaveChild==false){
IsActive=true;
return this; //返回窗口本身
}
else{
for(int i=0;i<5;i++){
if(m_ChildWindow[i].IsActive==true{
return m_ChildWindow[i];
//返回激活的子窗口
}
}
}
return this;
}
}
[url]http://www.gobenetzsfcp.cn[/url]