TList,TObjectList 使用——资源释放

TOjectList = Class (Tlist);

TOjectList继承Tlist,从名字上看就可以知道它是专门为对象列表制作的,那么他到底丰富了那些功能呢?

首先是 TObject 作为对象可以方便使用,无需指针强制。

丰富了 Notify 针对当前状态处理,比如如果是删除就将该点的引用一并清理掉;

 procedure TObjectList.Notify(Ptr: Pointer; Action: TListNotification);
      begin
        if (Action = lnDeleted) and OwnsObjects then
          TObject(Ptr).Free;
       inherited Notify(Ptr, Action);
      end;

在 Tlist 中,有 Clear(),将呼叫 SetCount,SetCapacity;即删除所有。

procedure TList.Clear();
     begin
        SetCount(0);
        SetCapacity(0);
     end;

当该对象销毁是,也会自动调用Clear() 清除所有。

destructor TList.Destroy;
      begin
         Clear();
      end;

总结:如果有一个对象需要用到列表,最好从 TOjectList 开始继承,对资源释放有完善的处理机制。

如果从 Tlist 继承也必须实现 Notify() ,方便资源释放,减少麻烦。

posted @   海利鸟  阅读(1969)  评论(0编辑  收藏  举报
编辑推荐:
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
阅读排行:
· 本地部署 DeepSeek:小白也能轻松搞定!
· 基于DeepSeek R1 满血版大模型的个人知识库,回答都源自对你专属文件的深度学习。
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 在缓慢中沉淀,在挑战中重生!2024个人总结!
· 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!
点击右上角即可分享
微信分享提示