屬性是代表類的例項或類中的乙個資料項的成員,使用屬性看起來非常像寫入或讀取乙個字段,語法是相同的。
與字段相似之處:
●它是命名的類成員。
●它有型別。
●它可以被賦值和讀取。
與字段不同之處:
●它不為資料儲存分配記憶體。
●它執行**。
屬性是指定的一組兩個匹配的,稱為訪問器的方法
●set訪問器為屬性賦值
●get訪問權從屬性獲取值。
set和get訪問權有預定義的語法和語義。可以把set訪問器想象成乙個方法,帶有單一引數「設定」屬性的值。get訪問器沒有引數並從屬性返回乙個值。
●set訪問器:
■擁有乙個單獨的,隱式的值參,名稱為value,與屬性的型別形同;
■擁有乙個返回型別void。
●get訪問器:
■沒有引數;
■擁有乙個與屬性型別系統的返回型別。
注意事項
● get訪問器的所有執行路徑必須包含一條return語句,返回乙個屬性型別的值。
●訪問器set和get可以以任意順序宣告,並且,除了這兩個訪問器外在屬性上不允許有其他方法。
class c1
get }}
public class program
",c.myvalue);
= 20;
"myvalue: ", c.myvalue);
}不能顯示的呼叫get和set訪問器
將字段宣告為private以封裝字段,並宣告乙個public屬性來控制從類的外部對該字段訪問。和屬性關聯的字段被稱為後備欄位或後備儲存。
class c1
get }}
public class program
",c.myvalue);
= 20;
"myvalue: ", c.myvalue);
}}
屬性訪問器並不侷限與僅僅對管理的後備欄位進傳出資料。訪問器get和set能執行任何計算。或不執行任何計算。唯一必須的行為是get訪問需要返回乙個屬性型別的值。
要想不定義屬性的某個訪問器,可以忽略該訪問器的宣告。
● 只有get訪問器的屬性稱為唯讀屬性,唯讀屬性是一種安全的,把一項資料從類或類的例項中傳出去。而不允許太多訪問方法。
● 只有set訪問器的屬性稱為只寫屬性。只寫屬性是一種安全的,把一項資料從類的外部傳入類,而不允許太多訪問的方法。
●連個訪問器中至少有乙個必須定義,否則編譯會產生一條錯誤訊息。
屬性比公共字段更好,理由如下:
●屬性是函式型成員而不是資料成員,允許你處理輸入和輸出,而公共字段不行。
●屬性可以唯讀或只寫,而字段不行。
●編譯後的變數和編譯後的屬性語義不同。
因為屬性經常被關聯到後備字段,c#提供了自動實現屬性,允許值宣告屬性而不宣告後備字段,編譯會為你建立隱藏的後備字段,並且自動掛到get和set訪問器上。
自動實現屬性的要點:
●不宣告後備字段——編譯器根據屬性的型別分配儲存。
●不能提供訪問器的方法體——它們必須被簡單的宣告為分號。get擔當簡單的記憶體讀,set擔當簡單的寫。
●除非通過訪問器,否則不能訪問後備字段。因為不能用其他方法訪問它,所以實現唯讀只寫屬性沒有意義,因此必須同時以提供讀寫訪問器。
屬性也可以宣告為static,靜態屬性的訪問器和所有靜態成員一樣,具有以下特點。
●不能訪問類的例項成員——雖然他們能被例項成員訪問。
●不管類是否有例項,它們都是存在的。
●當從類的外部訪問時,必須使用類名引用,而不是例項名。
c 屬性和索引器
1 屬性 所謂屬性其實就是特殊的類成員,它實現了對私有類域的受控訪問。在c 語言中有兩種屬性方法,其一是get,通過它可以返回私有域的值,其二是set,通過它就可以設定私有域的值。比如說,以下面的 為例,建立學生姓名屬性,控制對name欄位的受控訪問 2 索引器 簡單說來,所謂索引器就是一類特殊的屬...
c 屬性和索引器
1 屬性 所謂屬性其實就是特殊的類成員,它實現了對私有類域的受控訪問。在c 語言中有兩種屬性方法,其一是get,通過它可以返回私有域的值,其二是set,通過它就可以設定私有域的值。比如說,以下面的 為例,建立學生姓名屬性,控制對name欄位的受控訪問 code using system public...
c 的屬性和索引器
1 屬性 所謂屬性其實就是特殊的類成員,它實現了對私有類域的受控訪問。在c 語言中有兩種屬性方法,其一是get,通過它可以返回私有域的值,其二是set,通過它就可以設定私有域的值。比如說,以下面的 為例,建立學生姓名屬性,控制對name欄位的受控訪問 屬性定義 訪問修飾符 返回型別 屬性名 get ...