使 Delphi TList 不可变

nor*_*rty 4 delphi immutability tlist delphi-xe4

是否可以使 Delphi TList 不可变?
我在 delphi doc 中搜索了一个类似于 java 中 unmodifiableList 的类,但没有找到任何东西。

问候!

Ste*_*nke 7

您可以使用IReadOnlyList<T>来自 Spring4D 的。

如果您有一个IList<T>您只需调用AsReadOnlyListAsReadOnly自 2.0 起),它会返回与IReadOnlyList<T>不提供操作列表的方法相同的实例(没有AddDeleteItems属性的setter )。

但是unmodifiableList与 Java有区别:

在 Java 中List<T>UnsupportedOperationException当你尝试修改它时,你真的会得到一个which 会抛出,而在 Spring4D 中,它主要是在 .NET 之后建模的,你会得到一些你不能调用任何修改操作的东西。


Dav*_*nan 3

Delphi RTL 不包含实现不可变或只读列表的类。您必须自己实现这样的类,或者找到提供此类功能的库。