共用方式為


屬性設計

更新:2007 年 11 月

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

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

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

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

請勿提供僅 set 屬性。

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

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

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

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

Portions Copyright 2005 Microsoft Corporation.All rights reserved.

Portions Copyright Addison-Wesley Corporation.All rights reserved.

如需設計方針的詳細資訊,請參閱由 Krzysztof Cwalina 和 Brad Abrams 所著,並由 Addison-Wesley 於 2005 年發行的「Framework 設計方針:可重複使用之 .NET 程式庫的慣例、慣用語法和模式」一書。

請參閱

其他資源

成員設計方針

開發類別庫的設計方針