type TRen = record age: Integer; //把name定义成结构的属性. private Fname: string; procedure Setname(const Value: string); public property name: string read Fname write Setname; end; procedure TRen.Setname(const Value: string); begin Fname := Value; end; procedure TForm3.Button1Click(Sender: TObject); var MyRen: TRen; MyDic: TDictionary<string,TRen>; I: Integer; MyKeyAry: TArray<string>; 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 //如果是结构的属性,这么赋值是可以的. MyDic[MyKeyAry[I]].name := '操蛋'+IntToStr(I); //下面修改这个age这么干就不行,age不是结构的属性. MyDic[MyKeyAry[I]].age := IntToStr(I); end; ShowMessage(MyDic['key1'].name); finally MyDic.Free; end; end;
不解。。。。delphi就是 这么设计的,先这么搞吧