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就是 这么设计的,先这么搞吧

posted on 2015-04-02 12:38  del88  阅读(227)  评论(0编辑  收藏  举报