foreach 几种实现方式
时间: 2023-07-17 08:03:37 浏览: 53
在 C# 中,使用 foreach 循环可以对各种集合类型进行迭代。以下是几种实现 foreach 循环的方式:
1. 数组:
```csharp
int[] numbers = { 1, 2, 3, 4, 5 };
foreach (int number in numbers)
{
Console.WriteLine(number);
}
```
2. 列表:
```csharp
List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
foreach (string name in names)
{
Console.WriteLine(name);
}
```
3. 字典:
```csharp
Dictionary<int, string> students = new Dictionary<int, string>
{
{ 1, "Alice" },
{ 2, "Bob" },
{ 3, "Charlie" }
};
foreach (KeyValuePair<int, string> student in students)
{
Console.WriteLine($"Key: {student.Key}, Value: {student.Value}");
}
```
4. 集合类:
如果你使用的是自定义的集合类,你可以实现 IEnumerable 接口,并在类中定义一个 GetEnumerator 方法,返回一个实现了 IEnumerator 接口的迭代器对象。例如:
```csharp
public class MyCollection<T> : IEnumerable<T>
{
private T[] data;
public MyCollection(T[] items)
{
data = items;
}
public IEnumerator<T> GetEnumerator()
{
foreach (T item in data)
{
yield return item;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
// 使用自定义集合类
MyCollection<int> numbers = new MyCollection<int>(new int[] { 1, 2, 3 });
foreach (int number in numbers)
{
Console.WriteLine(number);
}
```
这些是常见的使用 foreach 循环的几种方式。你可以根据不同的集合类型或自定义类来选择适合的方式。无论使用哪种方式,都需要确保集合或类实现了适当的接口(如 IEnumerable、IEnumerator 等)来支持 foreach 循环的迭代。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)