本文**自netlyf
首先從兩者的宣告上來看,公共字段只是類用public修飾符所公開的簡單公共變數,而屬性則是對字段的封裝,它使用get和set訪問器來控制如何設定或返回字段值。
由於屬性的實質是方法(get或set方法),在il中是沒有屬性的概念的。所以對於開發過程中常用的賦值和取值操作來說,使用公共變數肯定會比使用屬性速度要快,效能上也稍高(方法和變數哪個速度不用說了吧)。
公共字段雖然在速度上快,但它必須開放欄位為public,這樣一來物件的呼叫者便可以直接修改其值,值的內容是否合法,執行中是否會出錯,就沒有了保障,進而會大大降低類的可重用性;相反,屬性類似於方法,它可以對存入的變數的值進行處理,如果覺得該值不合法,可以就地變換或者直接提出警告。這對該類的物件的使用安全有很大好處,在執行過程中,因公共變數值的錯誤而產生的問題會大大減少。
從上述內容來看,兩者各有優缺點,在實際專案開發過程中,我們究竟選擇使用哪一種方式呢?
如果滿足下面幾個條件,那麼我們便可以大膽地使用公共字段:
1. 允許自由讀寫;
2. 取值範圍只受資料型別約束而無其他任何特定限制;
3. 值的變動不需要引發類中其它任何成員的相應變化;
屬性的使用條件則恰好跟變數相反,只要滿足下面任何乙個條件,就應該使用屬性:
1. 要求字段只能讀或者只能寫;
2. 需要限制欄位的取值範圍;
3. 在改變乙個欄位的值的時候希望改變物件的其它一些狀態;
總結:雖然在實際專案的開發過程中,公共欄位和屬性在合適的條件下都可以使用,但是我們應該盡可能的使用屬性(property),而不是資料成員(field);把所有的字段都設定為私有字段,如果要暴露它們,則把它們封裝成屬性,這也是微軟推薦的方式。
欄位與屬性的區別
字段 是直接在類或結構中宣告的任何型別的變數。欄位是其包含型別的 成員 屬性是這樣的成員 它提供靈活的機制來讀取 編寫或計算某個私有欄位的值。可以像使用公共資料成員一樣使用屬性,但實際上它們是稱作 訪問器 的特殊方法。這使得可以輕鬆訪問資料,此外還有助於提高方法的安全性和靈活性。class time...
屬性與字段的區別
1.屬性與字段的區別 在c 中,我們可以毫無限制的訪問公有字段,但是在一些特定的場合,我們可能希望限制只能給字段賦予某個範圍的值,或者要求字段只能讀或只能寫,或者是在改變欄位時能改變物件的其他一些狀態,這些單靠欄位是無法做到的,於是就有了屬性,屬性包括兩個塊 get 和 set set 塊負責屬性的...
屬性與字段的區別
首先從兩者的宣告上來看,公共字段只是類用public修飾符所公開的簡單公共變數,而屬性則是對字段的封裝,它使用get和set訪問器來控制如何設定或返回字段值。由於屬性的實質是方法 get或set方法 在il中是沒有屬性的概念的。所以對於開發過程中常用的賦值和取值操作來說,使用公共變數肯定會比使用屬性...