属性(Property)是类、结构、接口的命名成员。类或结构中的成员变量或成员方法称为域(Field),而属性是域的扩展,并且可以使用相同的语法来访问。它们使用访问器(Accessors)让私有域的值可以被读写或操作。

  属性不会直接锁定私有域的存储位置。相反,它们具有可读写或计算它们的值的访问器。例如,有一个名为Student的类,有age、name、code的私有域。我们不能在类的范围外直接访问这些私有域,但是我们可以拥有可以访问这些私有域的属性。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

  属性的访问器包含有助于获取或设置属性的可执行语句。访问器声明可包含一个get访问器,一个set访问器,或同时包含两者。例如:

 1 //声明类型为string的Code属性
 2 public string Code
 3 {
 4     get
 5     {
 6         return code;
 7     }
 8     set
 9     {
10         code = value;
11     }
12 }

  下面展示一个实例,通过属性来访问和修改一个类中的某个特定的Private变量:

 1 using System;
 2 
 3 class Student
 4 {
 5     private string name = "inkice";
 6 
 7     //声明类型为string的Name属性
 8     public string Name
 9     {
10         get
11         {
12             return name;
13         }
14         set
15         {
16             name = value;
17         }
18     }
19 
20     public override string ToString()
21     {
22         return "Name = " + Name;
23     }
24 }
25 
26 class Demo
27 {
28     public static void Main()
29     {
30         //实例化一个新的Student对象
31         Student s = new Student();
32         //通过属性设置name的值
33         s.Name = "Last_Prism";
34         Console.WriteLine(s);
35         Console.ReadKey();
36     }
37 }

  当然,属性也对应着有抽象属性。一个抽象类可以拥有抽象属性,这些属性应当在派生类中被实现。例如:

 1 public abstract class Person
 2 {
 3     public abstract string Name
 4     {
 5         get;
 6         set;
 7     }
 8 }
 9 
10 class Student : Person
11 {
12     private string name;
13 
14     public override string Name
15     {
16         get
17         {
18             return name
19         };
20         set
21         {
22             name = value
23         };
24     }
25 }

  此外,在新版本的C#语言中,我们的属性可以简写了。例如:

1 public string Name { get; set; }
2 public string Color { get; private set; }

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄