3 回答

TA貢獻(xiàn)1818條經(jīng)驗 獲得超8個贊
您不必?fù)?dān)心通過屬性訪問字段所需的額外代碼,它會被JIT編譯器“優(yōu)化”(通過內(nèi)聯(lián)代碼)。除非它太大而無法內(nèi)聯(lián),否則無論如何您都需要額外的代碼。
而且用于定義簡單屬性的額外代碼也很少:
public int MyProp { get; set; } // use auto generated field.
當(dāng)您需要自定義時,您以后總是可以定義自己的字段。
因此,您剩下了額外的封裝/數(shù)據(jù)保護(hù)層,這是一件好事。
我的規(guī)則:總是通過屬性公開字段

TA貢獻(xiàn)1811條經(jīng)驗 獲得超5個贊
關(guān)于Properties的好處之一是,getter和setter可以具有不同的訪問級別??紤]一下:
public class MyClass {
public string MyString { get; private set; }
//...other code
}
只能在內(nèi)部(例如在構(gòu)造函數(shù)中)更改此屬性。閱讀有關(guān)依賴注入的信息。構(gòu)造函數(shù)注入和屬性注入都通過某種形式的外部配置處理屬性設(shè)置。那里有很多框架。如果您深入研究其中的一些內(nèi)容,將會對屬性及其使用有很好的了解。依賴注入還將幫助您解決有關(guān)良好實踐的第三個問題。
查看其他人的代碼時,您可以分辨某些東西是方法還是屬性,因為它們的圖標(biāo)不同。同樣,在Intellisence中,屬性摘要的第一部分是單詞Property。
- 3 回答
- 0 關(guān)注
- 445 瀏覽
添加回答
舉報