用法一
this關鍵字的作用是解決當傳入參數的名稱和數據字段的名稱,類型完全相同時產生的作用於歧義,一般情況下我們應該避免產生重名的習慣
先來演示下:
class Airplane
{
public int age;
public string name;
public void SetDeriverName(string name)
{
name = name;
}
}調用上面的類實例
Airplane fly = new Airplane();
fly.SetDeriverName("Jack");
Console.WriteLine("駕駛員的名字是:{0}", fly.name);編譯上面代碼時候,VS會給出警告,並且fly.name字段的內容為空。我們通過SetDeriverName給數據成員name字段賦值根本無效;問題在於編譯器認為賦值號右邊的name指向當然方法作用域內的變量,而不是類作用域中的字段。要想讓編譯器知道賦值號右邊的name是准備賦值給類數據成員name字段的,可以使用this關鍵字解決這個問題,只需在數據成員前使用this關鍵字即。事實上this是可選的,當不存在重名時候,根本不需要使用this

當我們使用this之后,VS的智能感知,自動的識別出this.name 就是public string name中的name字段
用法二
用this串聯構造函數
this的另一個用法是用來串聯構造函數,用法如下:
public Airplane() { }
public Airplane(int currAge)
{
if(currAge<25)
{
currAge = 25;
}
age = currAge;
}
public Airplane(int currAge, string name)
{
if(currAge<25)
{
currAge = 25;
}
age = currAge;
this.name = name;
}
public Airplane() { }
public Airplane(int currAge)
: this(currAge, "") { }
public Airplane(int currAge, string name)
{
if(currAge<25)
{
currAge = 25;
}
age = currAge;
this.name = name;
}
}
