屬性可以是 類(class)、結構(struct)、介面(interface)的命名成員,他提供靈活的機制來讀取、寫入、或計算私人(private)欄位的值,屬性可以看作是公用(public)欄位的成員,但他實際上是定義了一個“訪問器”的特殊方法讓私人欄位的值可以被讀寫或操作。
說的形象點吧,比如我們定義一個person類裡面有一個私人成員 private string name; 在外界我們執行個體化一個person對象per,要求為per起個名字,並且輸出這個名字,也就是為per.name賦一個值,然後輸出??經過前面的學習我們知道,類中的private修飾的變數外界對象是訪問不到的,(無法直接per.name="HC666"來搞定^_^) 因此只能在類裡面定義一個public修飾的setname與getname方法將“HC666”作為參數來進行寫入與輸出,這樣有點繁瑣,這個時候“屬性”就該登場了,我們為name定義一個讀寫屬性Name就可以彌補這個不足。
“訪問器”
屬性的訪問器包含有擷取或者設定屬性的可執行語句,訪問器的聲明可包含一個get訪問器(表示唯讀),或者一個set訪問器(表示唯寫),或者兩個同時包含(表示可讀可寫)。(上面的例子中我們使用get訪問器輸出name,使用set訪問器寫入)
定義屬性:
上面的例子中我們可以為name 定義一個讀寫屬性Name,使用外界對象能夠訪問的public修飾符
private string name; //聲明name變數 public string Name //聲明變數的屬性,讀寫 { get { return name; } //定義讀訪問器,其實就是一個方法 set { name = value; } //定義寫訪問器,set 方法有一個隱含的參數value }
再定義一個唯讀屬性吧,比如我們的年齡 age 是固定的唯讀
private uint age=10; //聲明變數 age private string Age //聲明變數的屬性,唯讀 { get { return age; } //讀訪問器 }
屬性的執行個體:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test1 { class person { //定義變數name,並且為name定義一個讀寫屬性 private string name; //定義屬性 public string Name {//訪問器 get { return name; } set { name = value; } //set內建一個value參數 } //定義變數age,並且為age定義一個唯讀屬性 private uint age=10; public uint Age { get { return age; } } } class Program { static void Main(string[] args) { person per = new person(); per.Name = "HC666"; //執行寫入屬性 Console.WriteLine("我的名字叫:{0}\t今年 {1} 歲了",per.Name,per.Age); //讀屬性 } } }
結果:
抽象屬性:
前面也說了,屬性可以使類、結構、介面的成員,自然也可以是抽象類別的抽象屬性了,抽象屬性同抽象方法一樣在衍生類別中被實現。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test1 {//定義一個person抽象類別 abstract class person {//定義抽象屬性 public abstract string Name {//讀寫 get; set; } public abstract uint Age {//唯讀 get; } } //定義衍生類別 class student : person { private string name; private uint age=10; //實現抽象屬性 public override string Name { get { return name ; } set { name=value; } } public override uint Age { get { return age; } } } class Program { static void Main(string[] args) { student stu = new student(); stu.Name = "HC666"; //執行寫入屬性 Console.WriteLine("我的名字叫:{0}\t今年 {1} 歲了",stu.Name,stu.Age); //讀屬性 } } }
結果與上一個例子是一樣的。
以上就是 C#學習日記27----屬性的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!