有没有办法引用使用“with”语句创建的对象实例?
@H_301_2@例:
with TAnObject.Create do begin DoSomething(instance); end;@H_301_2@DoSomething将使用实例引用,就像您将实例从变量声明引用传递给创建的对象一样. @H_301_2@例:
AnObject := TAnObject.Create;@H_301_2@谢谢.
解决方法
那么,你可以使用这样的方法:
// implement: type TSimpleMethod = procedure of object; function GetThis(const pr: TSimpleMethod): TObject; begin Result := TMethod(pr).Data; end; // usage: with TStringList.Create do try CommaText := '1,2,3,4,5,6,7,8,9,0'; ShowText(TStringList(GetThis(Free))); finally Free; end;@H_301_2@或班级助手:
type TObjectHelper = class helper For TObject private function GetThis: TObject; Inline; public property This: TObject read GetThis; end; ... function TObjectHelper.GetThis: TObject; begin Result := Self; end;@H_301_2@但实际上,之前的回复是正确的:你最好忘记“with”语句.