结构Structs

    结构对包含值语义的小型数据结构特别有用。复数、坐标系中的点或字典中的键值对都是结构的典型示例。对小型数据结构使用结构(而不是类)在应用程序执行的内存分配次数上存在巨大差异。例如,以下程序创建并初始化包含 100 个点的数组。通过将 Point 实现为类,可单独实例化 101 个对象,一个对象用于数组,其他所有对象分别用于 100 个元素。

    现在,仅实例化一个对象(即用于数组的对象),Point 实例存储内嵌在数组中。

    借助类,两个变量可以引用同一对象;因此,对一个变量执行的运算可能会影响另一个变量引用的对象。借助结构,每个变量都有自己的数据副本;因此,对一个变量执行的运算不会影响另一个变量。例如,以下代码片段生成的输出取决于 Point 是类还是结构。

    以上示例突出显示了结构的两个限制。首先,复制整个结构通常比复制对象引用效率更低,因此通过结构进行的赋值和值参数传递可能比通过引用类型成本更高。其次,除 in、 和 out 参数以外,无法创建对结构的引用,这就表示在很多应用场景中都不能使用结构。