C#中的屬性
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
簡(jiǎn)介屬性是代表類(lèi)的實(shí)例或類(lèi)中的一個(gè)數(shù)據(jù)項(xiàng)的成員,使用屬性看起來(lái)非常像寫(xiě)入或讀取一個(gè)字段,語(yǔ)法是相同的。 下面的代碼展示了名稱(chēng)為D的類(lèi)的使用,它有一個(gè)公有字段和一個(gè)公有屬性,從用法無(wú)法區(qū)分它們。
與字段類(lèi)似,屬性有如下特征: 1、它是命名的類(lèi)成員。 2、它有類(lèi)型。 3、它可以被賦值和讀取。 和字段不同的是,屬性是一個(gè)函數(shù)成員。 1、它不為數(shù)據(jù)存儲(chǔ)分配內(nèi)存。 2、它執(zhí)行代碼。 一個(gè)關(guān)于屬性的簡(jiǎn)單示例代碼如下:
這個(gè)示例的圖示如下:
在這個(gè)示例中, 屬性聲明和訪問(wèn)器set和get訪問(wèn)器有預(yù)定義的語(yǔ)法和語(yǔ)義。可以把set訪問(wèn)器想象成一個(gè)方法,帶有單一的參數(shù)“設(shè)置”屬性的值,get訪問(wèn)器沒(méi)有參數(shù)并從屬性返回一個(gè)值。 set訪問(wèn)器的特點(diǎn): 1、有一個(gè)單獨(dú)的、隱式的值參,名稱(chēng)為value,與屬性的類(lèi)型相同。 2、返回類(lèi)型void。 get訪問(wèn)器的特點(diǎn): 1、沒(méi)有參數(shù)。 2、返回類(lèi)型與屬性類(lèi)型相同。 屬性和關(guān)聯(lián)字段屬性常和字段關(guān)聯(lián),一種常見(jiàn)的方式是在類(lèi)中將字段聲明為private以封裝該字段,并聲明一個(gè)public屬性來(lái)控制從類(lèi)的外部對(duì)該字段的訪問(wèn),和屬性關(guān)聯(lián)的字段常被稱(chēng)為后備字段或后備存儲(chǔ)。 屬性和它們的后備字段有幾種命名約定。 一種約定是兩個(gè)名稱(chēng)使用相同的內(nèi)容,但字段使用Camel大小寫(xiě),屬性使用Pascal大小寫(xiě)。(Camel大小寫(xiě)風(fēng)格中,復(fù)合詞標(biāo)識(shí)符中每個(gè)單詞的首字母大寫(xiě),出來(lái)第一個(gè)單詞,其余字母都是小寫(xiě),Pascal大小寫(xiě)風(fēng)格中,復(fù)合詞中每個(gè)單詞的首字母都是大寫(xiě)。) 另一種約定是屬性使用Pascal大小寫(xiě),字段使用相同標(biāo)識(shí)符的Camel大小寫(xiě)版本,并以下劃線開(kāi)始。 兩種約定的示例代碼如下:
? 只讀和只寫(xiě)屬性要想不定義屬性的某個(gè)訪問(wèn)器,可以忽略該訪問(wèn)器的聲明。 只有g(shù)et訪問(wèn)器的屬性稱(chēng)為只讀屬性。只讀屬性是一種安全的,把一項(xiàng)數(shù)據(jù)從類(lèi)或類(lèi)的實(shí)例中傳出,而不允許太多訪問(wèn)方法。 只有set訪問(wèn)器的屬性稱(chēng)為只寫(xiě)屬性。只寫(xiě)屬性是一種安全的,把一項(xiàng)數(shù)據(jù)從類(lèi)的外部傳入類(lèi),而不允許太多的訪問(wèn)的方法。 兩個(gè)訪問(wèn)器至少有一個(gè)必須定義,否則編譯器會(huì)報(bào)錯(cuò),如下圖所示: 自動(dòng)實(shí)現(xiàn)屬性因?yàn)閷傩越?jīng)常被關(guān)聯(lián)到后備字段,C#提供了自動(dòng)實(shí)現(xiàn)屬性(automatically implemented property),允許只聲明屬性而不聲明后備字段,編譯器會(huì)為我們創(chuàng)建隱藏的后備字段,并且自動(dòng)掛接到get和set訪問(wèn)器上。 自動(dòng)實(shí)現(xiàn)屬性的注意點(diǎn): 1、不聲明后備字段,編譯器會(huì)根據(jù)屬性的類(lèi)型分配存儲(chǔ)。 2、不能提供訪問(wèn)器的方法體,它們必須被簡(jiǎn)單地聲明為分號(hào)。get擔(dān)當(dāng)簡(jiǎn)單的內(nèi)存讀,set擔(dān)當(dāng)簡(jiǎn)單的寫(xiě)。 3、只有通過(guò)訪問(wèn)器才能訪問(wèn)后備字段。因?yàn)椴荒苡闷渌姆椒ㄔL問(wèn)它,所以實(shí)現(xiàn)只讀和只寫(xiě)屬性沒(méi)有意義,因此必須同時(shí)提供讀寫(xiě)訪問(wèn)器。 一個(gè)自動(dòng)實(shí)現(xiàn)屬性的示例,代碼如下:
運(yùn)行結(jié)果如下圖所示: 轉(zhuǎn)自https://www.cnblogs.com/mingupupu/p/17844001.html 該文章在 2025/2/15 11:16:27 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |