存储匿名方法的容器
我有以下定义。
type
TOmniTaskDelegate = reference to procedure(const task: IOmniTask);
我应该使用什么类型的容器(D2009 中应该支持)来存储 TOmniTaskDelegate 实例的列表?目前我正在使用 TOmniTaskDelegate 数组,但我对此并不满意。
I have a following definition.
type
TOmniTaskDelegate = reference to procedure(const task: IOmniTask);
What type of container should I use (should be supported in D2009) to store a list of TOmniTaskDelegate instances? Currently I'm using array of TOmniTaskDelegate
but I'm not really happy with that.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我会使用
TList
。由于使用泛型,这是类型安全的,因此它将正确处理其成员的生命周期问题。I would use
TList<TOmniTaskDelegate>
. Since this is typesafe due to the use of generics, it will correctly handle the lifetime issues of its members.编辑:Delphi 2009 包含通用的
TList
,我假设它是使用array of
实现的,就像 Delphi 2010 中的那样。使TList
成为最佳选择!我保留原来的答案是因为它解释了为什么array of
是一个很棒的数据结构,以及为什么不使用它会带来很多麻烦。您选择的
Anonym 数组
对我来说看起来非常好,因为:如果您使用其他任何东西来实现,您需要自己完成参考。示例:
Edit: Delphi 2009 includes the generic
TList<T>
, I assume it's implemented usingarray of
, just as the one in Delphi 2010. That makes theTList<T>
the optimal choice! My original answer stays because it explains whyarray of
is a great data structure and why not using it is a lot of trouble.Your choice of
array of Anonym
looks very good to me because:If you use anything else for the implementation you'll need to take care of finalizing the references yourself. Examples: