共用方式為


在類別和結構之間選擇

類別是參考型別,而結構則是實值型別。 參考型別是在堆積上配置,且記憶體管理是由記憶體回收行程所處理。 實值型別是在堆疊上配置或內嵌,而且在超出範圍時會解除配置。 一般來說,實值型別的配置成本要比解除配置的成本低。 但是,如果是在需要大量 Boxing 和 Unboxing 的情況下使用,其執行效能與參考型別相較之下會比較不理想。 如需詳細資訊,請參閱Boxing 和 Unboxing (C# 程式設計手冊)

如需實值型別和參考型別的詳細資訊,請參閱一般型別系統

如果型別的執行個體很小,且通常存留期很短或是內嵌在其他物件中,請考慮定義結構而非類別。

除非型別具有下列所有特性,否則不要定義結構:

  • 它會以邏輯方式表示單一值,類似於基本型別 (整數、雙精度浮點數 (Double) 等)

  • 它的執行個體小於 16 個位元組

  • 它是不變的

  • 它不需經常進行 Boxed 處理

如果未滿足其中一個或多個條件,則要建立參考型別,而非結構。 無法遵守這個方針可能會對效能有負面的影響。

Portions Copyright 2005 Microsoft Corporation. All rights reserved.

Portions Copyright Addison-Wesley Corporation. All rights reserved.

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

請參閱

其他資源

型別設計方針

開發類別庫的設計方針