程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#的this保留字

C#的this保留字

編輯:關於C#

保留字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;
    }
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved