有没有办法引用使用“with”语句创建的对象实例?
例:
with TAnObject.Create do begin DoSomething(instance); end;
DoSomething将使用实例引用,就像您将实例从变量声明引用传递给创建的对象一样.
例:
AnObject := TAnObject.Create;
谢谢.
解决方法
那么,你可以使用这样的方法:
// 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;
或班级助手:
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;
但实际上,之前的回复是正确的:你最好忘记“with”语句.