C# 中所有数组都实现哪些接口

c++

1个回答

写回答

roseyyds

2025-07-09 18:21

+ 关注

C# 中的数组类型在实现接口方面非常丰富。它们实现了以下几个接口:IEnumerable、ICollection、IList、IReadOnlyCollection 和 IReadOnlyList。这些接口为数组提供了各种功能和特性,使得数组在各种场景下更加灵活和易于操作。

1. IEnumerable 接口

IEnumerable 接口是 C# 中最基本的接口之一。它定义了一种迭代数组元素的方式。通过实现 IEnumerable 接口,数组可以使用 foreach 循环进行遍历,而无需手动编写迭代逻辑。该接口只包含一个方法 GetEnumerator(),返回一个实现了 IEnumerator 接口的对象。下面是一个使用 IEnumerable 接口的示例代码:

csharp

int[] numbers = { 1, 2, 3, 4, 5 };

foreach (var number in numbers)

{

Console.WriteLine(number);

}

2. ICollection 接口

ICollection 接口继承自 IEnumerable 接口,并在其基础上添加了一些集合操作的方法。通过实现 ICollection 接口,数组可以获得集合的大小、添加和删除元素等功能。下面是一个使用 ICollection 接口的示例代码:

csharp

int[] numbers = { 1, 2, 3, 4, 5 };

Console.WriteLine(numbers.Length); // 输出数组长度

Array.Resize(ref numbers, numbers.Length + 1); // 调整数组大小

numbers[numbers.Length - 1] = 6; // 在末尾添加元素

Console.WriteLine(numbers.Length); // 输出调整后的数组长度

3. IList 接口

IList 接口继承自 ICollection 接口,并在其基础上添加了一些列表操作的方法。通过实现 IList 接口,数组可以进行元素的插入、移除、索引访问等操作。下面是一个使用 IList 接口的示例代码:

csharp

int[] numbers = { 1, 2, 3, 4, 5 };

Console.WriteLine(numbers[2]); // 输出索引为 2 的元素

Array.Reverse(numbers); // 反转数组元素的顺序

Console.WriteLine(numbers[2]); // 输出反转后索引为 2 的元素

4. IReadOnlyCollection 接口

IReadOnlyCollection 接口是一个只读集合的接口,它继承自 IEnumerable 接口。通过实现 IReadOnlyCollection 接口,数组可以以只读方式暴露给其他代码,防止被修改。下面是一个使用 IReadOnlyCollection 接口的示例代码:

csharp

int[] numbers = { 1, 2, 3, 4, 5 };

PrintCollection(numbers); // 输出集合元素

void PrintCollection(IReadOnlyCollection<int> collection)

{

foreach (var number in collection)

{

Console.WriteLine(number);

}

}

5. IReadOnlyList 接口

IReadOnlyList 接口继承自 IReadOnlyCollection 接口,并在其基础上添加了一些列表操作的方法。通过实现 IReadOnlyList 接口,数组可以以只读方式提供索引访问和列表操作功能。下面是一个使用 IReadOnlyList 接口的示例代码:

csharp

int[] numbers = { 1, 2, 3, 4, 5 };

Console.WriteLine(numbers[2]); // 输出索引为 2 的元素

Console.WriteLine(numbers.Count()); // 输出元素个数

通过实现这些接口,C# 中的数组类型变得更加灵活和易于使用。无论是进行迭代、添加或删除元素,还是进行索引访问或只读操作,数组都可以通过接口来实现所需的功能。这些接口使得数组可以更好地适应不同的编程场景,并提供了丰富的方法和属性来操作数组元素。无论是初学者还是有经验的开发人员,都可以通过这些接口更好地利用和操作数组。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号