• TDictionary字典 对象的释放。。。


    type TRen = record
      name: string;
      age: Integer;
    end;
    
    type TPeople = class
      private
        Fname: string;
        Fage: Integer;
        procedure Setname(const Value: string);
        procedure Setage(const Value: Integer);
      published
      property name: string read Fname write Setname;
      property age: Integer read Fage write Setage;
    end;
    
    procedure TForm3.Button1Click(Sender: TObject);
    var
      MyRen: TRen;
      MyDic: TDictionary<string,TRen>;
      I: Integer;
      MyKeyAry: TArray<string>;
      MyRen2: TRen;
    begin
      MyDic := TDictionary<string,TRen>.Create();
      try
        //---------------------------------------
        for I := 0 to 2 do
        begin
          MyRen.name := '群主'+IntToStr(I);
          MyRen.age := I;
          MyDic.Add('key'+IntToStr(I),MyRen);
        end;
    
        //---------------------------------------
        MyKeyAry := MyDic.Keys.ToArray;
        for I := 0 to MyDic.Count-1 do
        begin
          MyRen2 := MyRen;
          MyRen2.name := '操蛋'+IntToStr(I);
          MyDic.AddOrSetValue(MyKeyAry[I],MyRen2);
        end;
    
        ShowMessage(MyDic['key1'].name);
      finally
        MyDic.Free;
      end;
    end;
    
    { TPeople }
    
    procedure TPeople.Setage(const Value: Integer);
    begin
      Fage := Value;
    end;
    
    procedure TPeople.Setname(const Value: string);
    begin
      Fname := Value;
    end;
    
    procedure TForm3.Button2Click(Sender: TObject);
    var
      MyPeople: TPeople;
      MyDic: TObjectDictionary<string,TPeople>;
      I: Integer;
      MyKeyAry: TArray<string>;
    begin
      MyDic := TObjectDictionary<string,TPeople>.Create();
      try
        //---------------------------------------
        for I := 0 to 2 do
        begin
          MyPeople := TPeople.Create;
          MyPeople.name := '群主'+IntToStr(I);
          MyPeople.age := I;
          MyDic.Add('key'+IntToStr(I),MyPeople);
        end;
    
        //---------------------------------------
        MyKeyAry := MyDic.Keys.ToArray;
        for I := 0 to MyDic.Count-1 do
        begin
          //这里如果是结构就不能这样赋值,如果是对象就可以.
          MyDic[MyKeyAry[I]].name := '操蛋'+IntToStr(I);
        end;
    
        //---------------------------------------
        //窗体显示
        ShowMessage(MyDic['key1'].name);
    
        //---------------------------------------
        //用这种方式释放吧,不搞了,以后就用这种方式来.
        for I := 0 to MyDic.Count-1 do
        begin
          MyDic[MyKeyAry[I]].Free;
        end;
      finally
        MyDic.Free;
      end;
    end;
  • 相关阅读:
    myeclipse python下配置文档说明_转载
    Python快速教程博客园地址
    Mysql_存储功能
    Java_链表实现
    浅谈JAVA集合框架(转载)_常用的Vector和HashMap
    Java_Vector类的使用,以及Stack继承Vector,推出的栈的特性
    JavaWeb_数据传输_原
    HTML <input> 标签的 type 属性
    Java_Web_request.setAttribute("result",username);
    秦柯视频与文档资料-全集
  • 原文地址:https://www.cnblogs.com/del88/p/4386500.html
Copyright © 2020-2023  润新知