在C#中this用來指代當前對象,用於當成員函數中的形參名跟成員變量名一致時,進行區分。函數
但this不單單隻有這一做用,this還能夠以下這樣用:this
class class1 { private int i_a; private string s_a; public class1() { i_a = 0; s_a = "default"; } public class1(int i_a) { if (i_a > 5 && i_a < 10) { this.i_a = i_a; } s_a = "defalt"; } public class1(string s_a) { this.i_a = 0; this.s_a = s_a; } public class1(int i_a, string s_a) { if (i_a > 5 && i_a < 10) { this.i_a = i_a; } this.s_a = s_a; } public void print() { Console.WriteLine("i_a = {0}", i_a); Console.WriteLine("s_a = {0}", s_a); } }
注意到,這個對成員變量i_a的值的鑑定操做在第2跟第4個構造函數中重複了兩次,若是這個操做複雜一點,這樣的變量多一點,那重複代碼就大大增長,影響了代碼的維護性,一旦這個操做規則變化了,改動起來就比較麻煩,因此好的方法固然是將這個鑑定操做提取出來,放到一個單獨的函數中,而後統一調用,不過C#還提供了這樣一種機制來,以下:對象
class class1 { private int i_a; private string s_a; public class1() { i_a = 0; s_a = "default"; } public class1(int i_a):this(i_a,"default"){} public class1(string s_a):this(0,s_a){} public class1(int i_a, string s_a) { if (i_a > 5 && i_a < 10) { this.i_a = i_a; } this.s_a = s_a; } public void print() { Console.WriteLine("i_a = {0}", i_a); Console.WriteLine("s_a = {0}", s_a); } }
另外,this還能夠用在索引器中。blog