1. 程式人生 > >C#基礎:屬性

C#基礎:屬性

t對象 有助於 屬性 prop tel 擴展 新版 範圍 實現

  屬性(Property)是類、結構、接口的命名成員。類或結構中的成員變量或成員方法稱為域(Field),而屬性是域的擴展,並且可以使用相同的語法來訪問。它們使用訪問器(Accessors)讓私有域的值可以被讀寫或操作。

  屬性不會直接鎖定私有域的存儲位置。相反,它們具有可讀寫或計算它們的值的訪問器。例如,有一個名為Student的類,有age、name、code的私有域。我們不能在類的範圍外直接訪問這些私有域,但是我們可以擁有可以訪問這些私有域的屬性。

  屬性的訪問器包含有助於獲取或設置屬性的可執行語句。訪問器聲明可包含一個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; }

C#基礎:屬性