屬性可以是類別(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存取器(表示唯讀),或一個set存取器(表示唯寫),存取器的宣告則可包含一個get存取器(表示唯讀),或一個set存取器(表示唯寫)或兩個同時包含(表示可讀可寫)。 (上面的範例我們使用get存取器輸出name,使用set存取器寫入)
定義屬性:
上面的範例中我們可以定義使用物件存取屬性的屬性,能夠為外部使用物件存取的屬性, 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); //读属性 } } }
結果與上一個例子是一樣的。
以上就是 C#學習日記27----屬性的內容,更多相關內容請關注PHP中文網(www.php.cn)!