C#里的get和set訪問器,不寫和只寫get+set有區別嗎?


首先從兩者的聲明上來看,公共字段只是類用public修飾符所公開的簡單公共變量,而屬性則是對字段的封裝,它使用get和set訪問器來控制如何設置或返回字段值。

由於屬性的實質是方法(get或set方法),在IL中是沒有屬性的概念的。所以對於開發過程中常用的賦值和取值操作來說,使用公共變量肯定會比使用屬性速度要快,性能上也稍高(方法和變量哪個速度不用說了吧)。

公共字段雖然在速度上快,但它必須開放字段為public,這樣一來對象的調用者便可以直接修改其值,值的內容是否合法,運行中是否會出錯,就沒有了保障,進而會大大降低類的可重用性;相反,屬性類似於方法,它可以對存入的變量的值進行處理,如果覺得該值不合法,可以就地變換或者直接提出警告。這對該類的對象的使用安全有很大好處,在運行過程中,因公共變量值的錯誤而產生的問題會大大減少。

從上述內容來看,兩者各有優缺點,在實際項目開發過程中,我們究竟選擇使用哪一種方式呢?

如果滿足下面幾個條件,那么我們便可以大膽地使用公共字段:

1. 允許自由讀寫;

2. 取值范圍只受數據類型約束而無其他任何特定限制;

3. 值的變動不需要引發類中其它任何成員的相應變化;

屬性的使用條件則恰好跟變量相反,只要滿足下面任何一個條件,就應該使用屬性:

1. 要求字段只能讀或者只能寫;

2. 需要限制字段的取值范圍;

3. 在改變一個字段的值的時候希望改變對象的其它一些狀態;

 

參考:百度

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM