聚合:所包含对象的生命周期独立于容器对象。
组合:所包含对象的生命周期与容器对象相同。
在C++中,可以通过new和delete运算符实现。由于C#不提供delete运算符,那么我们如何在C#中实现聚合和组合呢?
聚合:所包含对象的生命周期独立于容器对象。
组合:所包含对象的生命周期与容器对象相同。
在C++中,可以通过new和delete运算符实现。由于C#不提供delete运算符,那么我们如何在C#中实现聚合和组合呢?
在您的包含对象上实现IDisposable
并在需要移除它们时调用Dispose
。
生命周期源于所有权,而所有权是区分聚合和组合的关键概念。在组合中,从属对象完全由容器拥有。在C++中,这意味着容器必须注意销毁它以避免内存泄漏。在C#中,这取决于对象/内存(托管或非托管)的类型;容器必须实现IDisposable并清理非托管的组合对象。在两种情况下,聚合体独立于容器存在,并且不是容器负责清理的责任。