C#的this保留字

保留字this仅限于在构造函数、类的方法和类的实例中使用,它有以下含义:

●在类的构造函数中出现的this作为一个值类型,它表示对正在构造的对象本身的引用。

●在类的方法中出现的this作为一个值类型,它表示对调用该方法的对象的引用。

●在结构的构造函数中出现的this作为一个变量类型,它表示对正在构造的结构的引用。

●在结构的方法中出现的this作为一个变量类型,它表示对调用该方法的结构的引用。

除此之外,在其它地方使用this保留字都是不合法的。

下面的代码演示了如何使用this保留字。

程序清单10-2:

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的用法。

程序清单10-3:

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()用于返回当前激活的窗口。如果打开了子窗口,则返回该子窗口的实例,否则返回主窗口本身。

程序清单10-4:

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;
    }
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索方法
, this
, 窗口
, window
, public
, 一个
保留字
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。

时间: 2024-09-20 12:52:55

C#的this保留字的相关文章

Jscript 保留字

js|jscript|保留字 Jscript 有一些保留字不能在标识符中使用.保留字对 Jscript 语言有特殊的含义,它们是语言语法的一部分.使用保留字在加载脚本的时候将产生编译错误. Jscript 还有一些留作将来使用的保留字.这些字不是现在的 Jscript 语言的一部分,然而它们是为将来的使用保留的. 保留词 break delete function return typeof case do if switch var catch else in this void contin

SQL保留字大全

action add aggregate all alter after and as asc avg avg_row_length auto_increment between bigint bit binary blob bool both by cascade case char character change check checksum column columns comment constraint create cross current_date current_time c

从Csharp走到VB.Net(一):MyClass保留字

保留字 2003年开始我接触的第一个B/S项目是DotNet,用的是Csharp.到现在2年过去了,也接触了VB.Net的项目,一步步走过来,看到同时CLR平台,2种语言在保留字上的特性还是很大的.以下我一一列来:关于MyClass,大家请先建立一个VBConsoleApplication程序,将本文SourceCP进去 Module Module1 Class BaseClass Public Overridable Sub MyMethod() Console.WriteLine("Fath

select-关于SELECT 子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确

问题描述 关于SELECT 子句中包含一个保留字.拼写错误或丢失的参数,或标点符号不正确 MstrSelectSql = ""SELECT StuInfo.NO AS 学号StuInfo.Name AS 姓名StuInfo.Sex AS 性别StuInfo.BirDate AS 出生日期StuInfo.PolType AS 政治面貌StuScore.English AS 大学英语StuScore.Computer AS 计算机StuScore.Math AS 大学高等数学StuScor

SELECT 子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确......????

问题描述 下面这样正常:strComm="selecttop10*fromregtablewhere(s_zhong='未中奖'ors_zhong=''ors_zhongisnull)ands_time>=@timeFromands_time<=@timeTo";System.Data.OleDb.OleDbParameter[]paras=newSystem.Data.OleDb.OleDbParameter[2];paras[0]=newSystem.Data.OleD

《Python参考手册(第4版•修订版)》——2.2 标识符和保留字

2.2 标识符和保留字 标识符是用来识别变量.函数.类.模块和其他对象的名称.标识符可以包含字母.数字和下划线(_),但必须以非数字字符开始.字母目前只允许使用ISO-Latin字符集中的字符A-Z和a-z.由于标识符是区分大小写的,所以FOO和foo是两个不同的标识符.诸如$.%和@等的特殊符号不允许出现在标识符中.另外,像if.else和for这样的单词是保留字,也不能用作标识符名称.下面的列表显示了所有保留字: and del from nonlocal try as elif globa

Access保留字&amp;amp;变量名列表_Access

Access保留字&变量名列表,建表时应避免使用这些词汇和符号. Access 2002/2003 - 复制代码 代码如下: A      ADD      ALL      Alphanumeric      ALTER      AND      ANY      Application      AS      ASC      Assistant      AUTOINCREMENT      Avg  -B      BETWEEN      BINARY      BIT      

Javascript基础教程之关键字和保留字汇总_基础知识

关键字不可以作为变量名或者函数名 复制代码 代码如下: break case catch continue default delete do else finally for function if in instanceof new return switch this throw try typeof var void while with 保留字是为以后关键字而准备的 也不可以用来变量或者函数名. 复制代码 代码如下: abstract boolean byte char class c

Java的关键字与保留字小结_java

Java 关键字列表 (依字母排序 共51组): abstract, assert,boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, enum,extends, final, finally, float, for, if, implements, import, instanceof, int, interface, long, native, new, pac