共用方式為


屬性設計

一般而言,方法表示動作,而屬性則表示資料。 屬性的使用與欄位一樣,這表示屬性在運算方面來說不應該是複雜的,或不應該產生副作用。 如需屬性設計的詳細資訊,請參閱索引屬性設計屬性變更通知事件

下列方針可協助您確保屬性的設計正確。

如果呼叫端不應該能夠變更屬性的值,一定要建立唯讀屬性。

請注意,屬性型別的可變動性會影響使用者可以變更的內容。 例如,如果您定義會傳回讀取 / 寫入集合的唯讀屬性,則使用者將無法為此屬性指派不同的集合,但是可以修該集合中的元素。

請勿提供僅 set 屬性。

如果無法提供屬性 getter,請改用一個方法來實作此功能。 此方法名稱應該以 Set 做為開頭,後面接著原本的屬性名稱。 例如,AppDomain 有一個稱為 SetCachePath 的方法,而沒有稱為 CachePath 的僅 set 屬性。

一定要為所有屬性提供合理的預設值,以確保預設值不會產生安全性漏洞或極無效率的設計。

一定要允許屬性依任何順序來設定,即使這樣會產生暫時無效的物件狀態時亦然。

如果屬性 setter 擲回例外狀況,一定要保留之前的值。

避免從屬性 getter 擲回例外狀況。

屬性 getter 應該是沒有任何先前條件的簡單作業; 如果 getter 可能擲回例外狀況,請考慮將此屬性重新設計為方法; 但是,這項建議不適用於索引子, 索引子可能會因為無效的引數擲回例外狀況。

從屬性 setter 擲回例外狀況是有效且可接受的。

Portions Copyright 2005 Microsoft Corporation. All rights reserved.

Portions Copyright Addison-Wesley Corporation. All rights reserved.

設計指引的詳細資訊,請參閱"框架設計準則:公約、 成語和可重複使用的模式。網路圖書館"書 Krzysztof Cwalina 和布拉德 · 艾布拉姆斯,2005年艾迪生 - 衛斯理,發表。

請參閱

其他資源

成員設計方針

開發類別庫的設計方針