本文复制了 MSDN library 的原话,觉得它说得有道理,狠经典

原话:


类和结构是 .NET Framework 中的常规类型系统的两种基本构造。 两者在本质上都属于数据结构,封装着一组整体作为一个逻辑单位的数据和行为。 数据和行为是该类或结构的“成员”,它们包含各自的方法、属性和事件等(本主题后面列出了这些内容)。

类或结构的声明类似于蓝图,用于在运行时创建实例或对象。 Person 的类或结构,则 Person 如果声明并初始化 Person 类型的变量 p,则 p 称为 Person 可以创建同一 Person

类是一种“引用类型”。 创建类的对象时,对象赋值到的变量只保存对该内存的引用。 将对象引用赋给新变量时,新变量引用的是原始对象。 通过一个变量做出的更改将反映在另一个变量中,因为两者引用同一数据。

结构是一种值类型。 创建结构时,结构赋值到的变量保存该结构的实际数据。 将结构赋给新变量时,将复制该结构。 因此,新变量和原始变量包含同一数据的两个不同的副本。 对一个副本的更改不影响另一个副本。

类通常用于对较为复杂的行为建模,或对要在创建类对象后进行修改的数据建模。 结构最适合一些小型数据结构,这些数据结构包含的数据以创建结构后不修改的数据为主。