C#基礎:屬性
阿新 • • 發佈:2019-05-06
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#基礎:屬性