更新:2007 年 11 月
类是引用类型,而结构是值类型。引用类型在堆中分配,内存管理由垃圾回收器处理。值类型在堆栈上或以内联方式分配,且在超出范围时释放。通常,值类型的分配和释放开销更小。然而,如果在要求大量的装箱和取消装箱操作的情况下使用,则值类型的表现就不如引用类型。有关更多信息,请参见装箱和取消装箱(C# 编程指南)。
有关值类型和引用类型的更多信息,请参见通用类型系统概述。
不要定义结构,除非该类型具备以下所有特征:
它在逻辑上表示单个值,与基元类型(整型、双精度型等)类似。
它的实例大小小于 16 字节。
它是不可变的。
它将不必频繁被装箱。
如果这些条件中的一个或多个没有满足,则创建引用类型而不是结构。不遵守此准则会对性能产生负面影响。
部分版权所有 2005 Microsoft Corporation。保留所有权利。
部分版权所有 Addison-Wesley Corporation。保留所有权利。
有关设计指南的更多信息,请参见 Krzysztof Cwalina 和 Brad Abrams 编著、Addison-Wesley 于 2005 年出版的“Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries”(《框架设计指南:可重用 .NET 库的约定、术语和模式》)。