Share via


在類別和結構之間選擇

更新:2007 年 11 月

類別是參考型別,而結構則是實值型別。參考型別是在堆積上配置,且記憶體管理是由記憶體回收行程所處理。實值型別是在堆疊上配置或內嵌,而且在超出範圍時會解除配置。一般來說,實值型別的配置成本要比解除配置的成本低。但是,如果是在需要大量 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 和 Brad Abrams 所著,並由 Addison-Wesley 於 2005 年發行的「Framework 設計方針:可重複使用之 .NET 程式庫的慣例、慣用語法和模式」一書。

請參閱

其他資源

型別設計方針

開發類別庫的設計方針