首页 > 后端开发 > C++ > 为什么 C# `System.Array` 类实现 `IList` 接口?

为什么 C# `System.Array` 类实现 `IList` 接口?

Susan Sarandon
发布: 2024-12-28 06:29:09
原创
129 人浏览过

Why Does the C# `System.Array` Class Implement the `IList` Interface?

深入研究 IList 的数组实现:理解基本原理

C# 中的 System.Array 类表现出一个独特的特征:它实现了 IList界面。虽然这个概念表面上看起来很简单,但在数组上调用 IList 方法的实用性可能会引起问题。本文旨在解决此实现背后的根本原因,而不是关注调用某些方法时出现的异常。

揭示原理

原因的答案Array 实现 IList 在于数组的固有功能。数组通过索引提供了非常快速的访问,这是其他集合接口不提供的功能。因此,IList/IList作为支持此功能的唯一集合接口而脱颖而出。因此,在 Array 中实现 IList 有一个务实的目的。

对界面设计提出质疑

缺乏专门为带有索引器的常量集合定制的界面引发了进一步的疑问。不幸的是,目前无法提供明确的答复。此外,缺乏集合的只读接口也是一个值得注意的遗漏,值得考虑。

重新评估界面设计

在理想的情况下,一套全面的(通用)集合接口将存在,每个接口都迎合特定的集合功能。术语也应该修改,因为对索引集合使用术语“列表”似乎违反直觉。潜在的替代层次结构可能包括:

  • 仅枚举: IEnumerable
  • 没有索引器的只读: IReadOnlyCollection
  • 不使用索引器可调整大小: ICollection
  • 使用索引器只读: IReadOnlyList
  • 带索引器的恒定大小: IReadOnlyIndexedList
  • 带索引器的可变大小: IList

解决接口限制

虽然当前的集合接口可能达不到理想的效果,但它们通过声明有效方法来遵守替换原则通过属性,从而保持接口的完整性。

以上是为什么 C# `System.Array` 类实现 `IList` 接口?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板