3 回答
TA贡献1853条经验 获得超18个赞
复制或比较实例没有意义(例如,窗口) 实例生存期与外部影响相关联(例如,TemporaryFile) 实例只是“接收器”-只写到外部状态的管道(例如CGContext)。
结构实例总是通过值传递,类实例总是通过引用传递。这意味着它们适合于不同类型的任务。在考虑项目所需的数据结构和功能时,请确定每个数据结构应该定义为类还是结构。
作为一般指导方针,考虑在下列一个或多个条件适用时创建一个结构:
该结构的主要目的是封装一些相对简单的数据值。 在分配或传递该结构的实例时,可以合理地预期封装的值将被复制,而不是引用。 结构存储的任何属性本身都是值类型,它们也将被复制而不是引用。 该结构不需要从另一个现有类型继承属性或行为。
良好的结构候选例子包括:
几何形状的大小,可能封装了一个宽度属性和一个高度属性,两者都属于Double类型。 一种在系列中引用范围的方法,可能会封装Int类型的Start属性和Length属性。 三维坐标系中的一个点,可能封装了x、y和z的属性,每个属性都是Double类型的。
在所有其他情况下,定义一个类,并创建要通过引用管理和传递的该类实例。实际上,这意味着大多数自定义数据构造应该是类,而不是结构。
- 3 回答
- 0 关注
- 511 浏览
添加回答
举报