用法一
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; } }