這個

this 關鍵字引用類(物件)的當前例項。這樣,可以區分具有相同名稱的兩個變數,一個在類級別(一個欄位),一個是方法的引數(或區域性變數)。

public MyClass {
    int a;

    void set_a(int a)
    {
        //this.a refers to the variable defined outside of the method,
        //while a refers to the passed parameter.
        this.a = a;
    }
}

關鍵字的其他用法是連結非靜態建構函式過載

public MyClass(int arg) : this(arg, null)
{
}

和編寫索引器

public string this[int idx1, string idx2]
{
    get { /* ... */ }
    set { /* ... */ }
}

並宣告擴充套件方法

public static int Count<TItem>(this IEnumerable<TItem> source)
{
    // ...
}

如果沒有與區域性變數或引數衝突,那麼是否使用 this 是一種風格問題,因此 this.MemberOfTypeMemberOfType 在這種情況下是等效的。另見 base 關鍵字。

請注意,如果要在當前例項上呼叫擴充套件方法,則需要 this。例如,如果你在一個實現 IEnumerable<> 的類的非靜態方法中,並且你想從之前呼叫副檔名 Count,你必須使用:

this.Count()  // works like StaticClassForExtensionMethod.Count(this)

this 在那裡不能省略。