從兩者的聲明上來(lái)看,公共字段只是類用public修飾符所公開的簡(jiǎn)單公共變量,而屬性則是對(duì)字段的封裝,它使用get和set訪問(wèn)器來(lái)控制如何設(shè)置或返回字段值。
由于屬性的實(shí)質(zhì)是方法(get或set方法),在IL中是沒(méi)有屬性的概念的。所以對(duì)于開發(fā)過(guò)程中常用的賦值和取值操作來(lái)說(shuō),使用公共變量肯定會(huì)比使用屬性速度要快,性能上也稍高(方法和變量哪個(gè)速度不用說(shuō)了吧)。
公共字段雖然在速度上快,但它必須開放字段為public,這樣一來(lái)對(duì)象的調(diào)用者便可以直接修改其值,值的內(nèi)容是否合法,運(yùn)行中是否會(huì)出錯(cuò),就沒(méi)有了保障,進(jìn)而會(huì)大大降低類的可重用性;相反,屬性類似于方法,它可以對(duì)存入的變量的值進(jìn)行處理,如果覺(jué)得該值不合法,可以就地變換或者直接提出警告。這對(duì)該類的對(duì)象的使用安全有很大好處,在運(yùn)行過(guò)程中,因公共變量值的錯(cuò)誤而產(chǎn)生的問(wèn)題會(huì)大大減少。
從上述內(nèi)容來(lái)看,兩者各有優(yōu)缺點(diǎn),在實(shí)際項(xiàng)目開發(fā)過(guò)程中,我們究竟選擇使用哪一種方式呢?
如果滿足下面幾個(gè)條件,那么我們便可以大膽地使用公共字段:
1. 允許自由讀寫;
2. 取值范圍只受數(shù)據(jù)類型約束而無(wú)其他任何特定限制;
3. 值的變動(dòng)不需要引發(fā)類中其它任何成員的相應(yīng)變化;
屬性的使用條件則恰好跟變量相反,只要滿足下面任何一個(gè)條件,就應(yīng)該使用屬性:
1. 要求字段只能讀或者只能寫;
2. 需要限制字段的取值范圍;
3. 在改變一個(gè)字段的值的時(shí)候希望改變對(duì)象的其它一些狀態(tài);
總結(jié):雖然在實(shí)際項(xiàng)目的開發(fā)過(guò)程中,公共字段和屬性在合適的條件下都可以使用,但是我們應(yīng)該盡可能的使用屬性(PRoperty),而不是數(shù)據(jù)成員(field);把所有的字段都設(shè)置為私有字段,如果要暴露它們,則把它們封裝成屬性,這也是微軟推薦的方式。
http://www.survivalescaperooms.com/netlyf/archive/2010/12/20/1910977.html
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注