我们在其中使用了TList<TFunc<Boolean>>一些function ... of objects,现在又想要Remove()一些条目.但它不起作用,因为很明显你根本无法reference to ...可靠地比较这些东西.
这是一些测试代码:
program Project1;
{$APPTYPE CONSOLE}
uses
Generics.Defaults,
SysUtils;
type
TFoo = class
strict private
FValue: Boolean;
public
constructor Create();
function Bar(): Boolean;
end;
{ TFoo }
function TFoo.Bar: Boolean;
begin
Result := FValue;
end;
constructor TFoo.Create;
begin
inherited;
FValue := Boolean(Random(1));
end;
function IsEqual(i1, i2: TFunc<Boolean>): Boolean;
begin
Result := TEqualityComparer<TFunc<Boolean>>.Default().Equals(i1, i2);
end;
var
s: string;
foo: TFoo;
Fkt1, Fkt2: TFunc<Boolean>;
begin
try
Foo := …Run Code Online (Sandbox Code Playgroud) Delphi是否"实例化"每个匿名方法(如对象)?如果是这样,Delphi何时创建此实例,最重要的是,Delphi何时释放它?
因为匿名方法还捕获外部变量并延长其生命周期,所以知道这些变量何时将从内存中"释放"非常重要.
在另一个匿名方法中声明匿名方法有什么可能的缺点.是否可以循环引用?