我不知道一个"规则"决定了这一点,但我认为你是对的,它几乎从未发生过.这取决于组件的作者,因为在TPersistent中引入了Assign,但在实际实现覆盖之前不会自行执行任何操作.实际上它默认抛出异常(X不能分配给Y).
这也是分配的力量.您分配的源甚至不必是相同类型的组件,因为每个分配都是自定义实现.在TBitmap示例中,您可以将其分配给TPicture,甚至可以将其他类型的图形分配给TBitmap,这样可以让这些图形在位图的画布上绘制.
在大多数情况下,如果不是全部,我遇到的情况,分配就是这样的:分配,有时甚至将一个对象的数据(状态,如果你愿意)转换成另一个对象.
事件是不同的.具有事件处理程序并管理它不是一个对象.决定其订阅者还想订阅其他对象并不是该对象的工作.指向事件处理程序的/指针的值不是对象的(相关)数据的一部分.
它只是暴露了其他人听到发生的事情的可能性,如果那些东西也想要听另一个对象,他们只需要为这些对象分配一个事件处理程序.
所以对我而言,事件没有被复制是完全合理的,而且我认为我从未在我自己编写的Assign实现中包含事件.
| 归档时间: |
|
| 查看次数: |
207 次 |
| 最近记录: |