C#中有一種獨有的定義,其形式類似於方法,卻又沒有小括號。如下面第6行到第16行代碼
1 namespace CSharp 2 { 3 class Program 4 { 5 private String name; 6 public String Name 7 { 8 get 9 { 10 return name; 11 } 12 set 13 { 14 name = value; 15 } 16 } 17 } 18 }
第6行到16行都是get和set相關代碼,需要注意第5行的name和第6行中的Name名字雖然不一樣,但卻不影響結果,因為調用時使用的是Name,如下面第8、10行代碼。此處千萬不要覺得是對name進行操作就將第6行的Name命名為name,如此一來由於存在重復的變量程序便會立即報錯。get返回name的值,set中有一個關鍵字value,這里的value可以理解為具體調用時的值,如下面代碼第8行的“cyb”就是一個value,這樣就在調用時把具體的值賦給了name。
get和set不會出現在其他類的調用語句中,是在調用時默認發揮作用。
1 namespace CSharp 2 { 3 class Main_c 4 { 5 static void Main(string[] args) 6 { 7 Program p = new Program(); 8 p.Name = "cyb"; //使用了set 9 Console.WriteLine(p.Name); 10 if (p.Name == "cyb")//使用了get 11 { 12 Console.WriteLine(p.Name); 13 } 14 else 15 { 16 Console.WriteLine("用戶名不匹配"); 17 } 18 Console.ReadKey(); 19 } 20 } 21 }
程序第4行和第6行分別使用了set和get。
測試結果如下