gpt4 book ai didi

c# - List.AsReadOnly() 与 IReadOnlyCollection

转载 作者:IT王子 更新时间:2023-10-29 03:58:30 25 4
gpt4 key购买 nike

List<T>工具 IReadOnlyCollection<T>接口(interface)并提供AsReadOnly()返回 ReadOnlyCollection<T> 的方法(它又实现了 IReadOnlyCollection<T> )。

AsReadyOnly() 的用途/原因是什么? ?它的存在有一种或两种极端情况的味道,其中只是将列表返回为 IReadOnlyCollection<T>。只是不够好。

起初我认为这可能是为了防止放弃成本,但看起来你可以用 ReadOnlyCollection<T> 做到这一点的 Items访问器(accessor)。

顺便说一句。 ReadOnlyCollection<T> 的文档类型阅读

Provides the base class for a generic read-only collection.

在我看来,这与将构造函数描述为

相冲突

Initializes a new instance of the (...) class that is a read-only wrapper around the specified list.

更新:我没看到 ReadOnlyCollection<T>Items受到保护。

最佳答案

如果你只是返回一个实际的 List<T>作为IReadOnlyList<T> ,那么调用者总是可以将其转换回去,然后根据需要修改列表。相反,调用 AsReadOnly()创建列表的只读包装器,消费者无法更新。

请注意,只读包装器将反射(reflect)对基础列表所做的更改,因此可以访问原始列表的代码仍然可以在知道只读版本的任何消费者都将看到这些更改的情况下更新它。

关于c# - List<T>.AsReadOnly() 与 IReadOnlyCollection<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17398428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com