在類別和結構之間選擇
更新: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 程式庫的慣例、慣用語法和模式」一書。