此內 Pearson Education, Inc. 從 架構設計指導方針:可複使用 .NET 程式庫慣例、慣用語和模式第 2 版 可權列印。
該版於2008年出版,該書那後於第三版 全面修訂 。
此頁面某些資訊可能。
如果無法提供屬性 getter,請改為實作功能做為方法。


它們應該視為智慧型欄位。
它們具有欄位呼叫語法,以及方法彈性。
✔️ 如果呼叫端應該變屬性值,請建立限取得屬性。
請記住,如果屬性類型是可變動參考類型,即使屬性是限 get,可以變屬性值。
❌ 請提供限設定屬性或屬性,而 setter 具有 getter 泛的存取範圍。
例如,請搭配公用 setter 和受保護 getter 使用屬性。
如果無法提供屬性 getter,請改為實作功能做為方法。
請考慮使用 來啟動方法名稱 Set ,並遵循您命名屬性內容。
例如,有一個稱為 SetCachePath 方法, AppDomain 而不是具有稱為 CachePath 限集合屬性。
✔️ DO 為所有屬性提供合理預設值,確保預設值會造成安全性漏洞或沒有效率程式碼。
✔️ DO 允許任何順序設定屬性,即使這會導致物件狀態。
有兩個或多個屬性某個點關聯,其中一個屬性某些值可能,因為物件上其他屬性值可能。
這種情況下,於狀態產生例外狀況應該延後,直到物件實際使用關聯屬性。
例如,字串是字元集合,而 上 System.String 索引子加入存取其字元。


延伸閱讀…
屬性 getter 應該是作業,而且應該有任何前置條件。
如果 getter 可以擲回例外狀況,可能應該設計方法。
請注意,此規則適用於索引子,我們預期例外狀況是驗證引數結果。
索引屬性是具有參數屬性,而且可以使用類似於陣列索引語法來呼叫。
索引屬性稱為索引子。
索引子應該只在提供邏輯集合中專案存取權 API 中使用。
例如,字串是字元集合,而 上 System.String 索引子加入存取其字元。
延伸閱讀…
如果設計需要多個參數,請考慮屬性是否代表邏輯集合存取子。
如果沒有,請改用 方法。
請考慮使用 或 Set 啟動方法名稱 Get 。
如果設計需要其他類型參數,請評估 API 是否代表邏輯集合存取子。
如果沒有,請使用 方法。
請考慮使用 或 Set 啟動方法名稱 Get 。
✔️ 請索引屬性使用名稱,除非有名稱 Item (例如,請參閲 上 Chars[]System.String 屬性)。
C# 中,索引子預設會命名為 Item。
IndexerNameAttribute可用來自訂此名稱。