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

C# 關鍵字this

編輯:.NET實例教程
關鍵字this有兩種基本的用法,一是用來進行this訪問,二是在聲明構造函數時指定需要先執行的構造函數。
 this訪問
在類的實例構造函數和實例函數成員中,關鍵字this表示當前的類實例或者對象的引用。this不能用在靜態構造函數和靜態函數成員中,也不能在其他地方使用。
當在實例構造函數或方法內使用了與字段名相同的變量名或參數名時,可以使用this來區別字段和變量或者參數。下面的代碼演示了this的用法。
public class Dog
{
    public string name;
    public int age;
    public Dog()
    {
    }
    public Dog(string name)       // 在這個函數內,name是指傳入的參數name
    {
        this.name = name;           // this.name表示字段name
    }
    public Dog(string name, int age) // 在這個函數內,name是指傳入的參數name
    {                     // age是指傳入的參數age
        this.name = name;            // this.name表示字段name
        this.age = age;           // this.age表示字段age
    }
}
實際上,this被定義為一個常量,因此,雖然在類的實例構造函數和實例函數成員中,this可以用於引用該函數成員調用所涉及的實例,但是不能對this本身賦值或者改變this的值。比如,this++,--this之類的操作都是非法的。
 this用於構造函數聲明
可以使用如下的形式來聲明實例構造函數:
『訪問修飾符』【類名】(『形式參數表』) : this(『實際參數表』)
{
   【語句塊】
}
其中的this表示該類本身所聲明的、形式參數表與『實際參數表』最匹配的另一個實例構造函數,這個構造函數會在執行正在聲明的構造函數之前執行。
比如:
// ThisAndConstructor.cs
// 關鍵字this用於聲明構造函數
using System;
class A
{
    public A(int n)
    {
        Console.WriteLine("A.A(int n)");
    }
    public A(string s, int n) : this(0)
    {
        Console.WriteLine("A.A(string s, int n)");
    }
}
class Test
{
    static void Main()
    {
        A a = new A("A Class", 1);
    }
}


將輸出:
A.A(int n)
A.A(string s, int n)
這說明,執行構造函數A(string s, int n)之前先執行了構造函數A(int n)。 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved