C#中的set和get
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。
测试结果如下