谁能解释为什么下面的代码失败了?
type TIDEThemeObserverFunc = reference to procedure(foo: integer);
var fObserverFuncs: TList<TIDEThemeObserverFunc>
function RegisterEventObserver(aObserverFunc: TIDEThemeObserverFunc): Pointer;
begin
fObserverFuncs.Add(aObserverFunc);
Result := @aObserverFunc;
// line below somehow fails
assert(fObserverFuncs.IndexOf(TIDEThemeObserverFunc(Result)) <> -1);
end;
我假设匿名方法可以简单地通过指针转换和使用,但这似乎是一个错误的假设。此外,任何解释匿名方法如何在后台实现的资源都会很棒。TIA。