对象 引用

群里的写法

待测试

 

procedure TForm1.btn1Click(Sender: TObject);
var
lStrings: TStrings;
begin
lStrings:= TStringList.Create;
try
    lStrings.Add('chen');
    GetOperatorAllDeptIDs(lStrings);
    ShowMessage(lStrings.Text);
finally
    lStrings.Free;
end;


调用方法一:

function GetOperatorAllDeptIDs( AStrings: TStrings):String;
begin
//注释 AStrings:= TStringList.Create;
AStrings. Add('zhi');
end;

返回结果为:chen zhi

分析:此时传递的AStrings 为lStrings对象的对象引用副本,即也指向对象lStrings,所以当执行AStrings. Add('zhi');时操作为lStrings对象添加‘zhi’。


调用方法二:

function GetOperatorAllDeptIDs( var AStrings: TStrings):String;
begin
//注释 AStrings:= TStringList.Create;
AStrings. Add('zhi');
end;

返回结果为:chen zhi

分析:此时传递的AStrings 为lStrings对象的对象引用,当执行AStrings. Add('zhi');时操作的对象为lStrings对象。


调用方法三:

function GetOperatorAllDeptIDs( AStrings: TStrings):String;
begin
AStrings:= TStringList.Create;
AStrings. Add('zhi');
end;

返回结果为:chen

分析:此时传递的AStrings 为lStrings对象引用的副本,当方法中执行AStrings:= TStringList.Create;又将对象引用副本 的引用指向了此时新建的一个对象,所以此时对AStrings的任何操作已经不会影响lStrings对象。


调用方法四:

function GetOperatorAllDeptIDs( var AStrings: TStrings):String;
begin
AStrings:= TStringList.Create;
AStrings. Add('zhi');
end;

返回结果为:zhi

分析:此时传递的AStrings 为lStrings对象的对象引用,当方法中执行AStrings:= TStringList.Create;时, lStrings这个对象引用指向了新建的AStrings对象。所以,lString的值为’Zhi’

你可能感兴趣的:(delphi)