[fpc-pascal] Interface performance
andrewd207 at aol.com
Sat Nov 12 14:43:03 CET 2016
On 11/11/2016 10:14 PM, Ryan Joseph wrote:
> Arr := TArray.Create;
> Obj := ObjInt.GetObject;
> [do some stuff]
> // here the problems start because TArray always returns TObject
> // and I can’t cast TObject to IMyInterface even though the object
> // stored in the array does in fact implement IMyInterface
> ObjInt := IMyInterface(Arr.GetObject(0)); // error! but I need to get a reference to IMyInterface from the array
> // I have to use “as” or Supports here and it defeats the purpose
> ObjInt := Arr.GetObject(0) as IMyInterface;
You have two options if you have a list of TObject.
1. (Arr.GetObject(n) as IMyInterface).DoSomething;
2 is kind of pointless because the interface is not being used so why
Probably it is better to keep a list of IMyInterface rather than TObject.
I made a small test and uploaded it to github if you want to check it
out. It uses a list of IMyInterface.
Or as a zip:
More information about the fpc-pascal