在类和结构之间选择

类是引用类型,而结构是值类型。 引用类型在堆中分配,内存管理由垃圾回收器处理。 值类型在堆栈上或以内联方式分配,且在超出范围时释放。 通常,值类型的分配和释放开销更小。 然而,如果在要求大量的装箱和取消装箱操作的情况下使用,则值类型的表现就不如引用类型。 有关更多信息,请参见装箱和取消装箱(C# 编程指南)

有关值类型和引用类型的更多信息,请参见 常规类型系统

如果类型的实例不大,且通常生存期短或嵌入其他对象,则考虑定义结构而不是类。

不要定义结构,除非该类型具备以下所有特征:

  • 它在逻辑上表示单个值,与基元类型(整型、双精度型等)类似。

  • 它的实例大小小于 16 字节。

  • 它是不可变的。

  • 它将不必频繁被装箱。

如果这些条件中的一个或多个没有满足,则创建引用类型而不是结构。 不遵守此准则会对性能产生负面影响。

部分版权所有 2005 Microsoft Corporation。 保留所有权利。

部分版权所有 Addison-Wesley Corporation。 保留所有权利。

设计指引的详细信息,请参阅"框架设计准则: 公约、 成语和可重复使用的模式。网络图书馆"书 Krzysztof Cwalina 和布拉德 · 艾布拉姆斯,2005年艾迪生 - 韦斯利,发表。

请参见

其他资源

类型设计准则

类库开发的设计准则