C# 中的 Foreach 循环
本文关键字:循环 Foreach 中的 | 更新日期: 2023-09-21 10:32:22
在 C# 中,foreach 循环迭代集合类型,如数组、数组列表、列表、哈希表、字典等。 它可以与实现IEnumerable接口的任何类型一起使用。
Syntax:
foreach (var item in collection)
{
//access item
}
下面的示例演示使用 foreach 循环对array进行迭代。
示例: Iterate an Array
string[] carCompanies = { "Tata Motors", "Mahindra", "Volkswagen", "Toyota" };
foreach(string car in carCompanies)
{
Console.WriteLine("{0}", car);
}
输出:
Tata MotorsMahindra
Volkswagen
Toyota
下面的示例演示 list 集合上的 foreach 循环。
示例: Iterate a List
List<int> oddNumbers = new List<int>() { 1, 3, 5, 7, 9};
foreach(int num in oddNumbers)
{
Console.Write(num);
}
oddNumbers.ForEach(num => Console.Write(num)); //using ForEach extension method
13579 System.Collections.Generic
命名空间包含可与任何内置集合类(如 List、Dictionary、SortedList 等)一起使用的 ForEach()
扩展方法。
要点:
- foreach 循环只向前迭代。
- 与 for 循环相比,每个循环的性能方面需要花费很多时间。因为在内部它使用额外的内存空间以及。
- foreach 循环使用
IEnumerable
接口GetEnumarator()
方法。因此,foreach 循环可以与已实现接口的任何类一起使用。 - 通过使用中断、返回、转到和抛出退出 foreach 循环。
下面的示例演示 dictionary 集合上的 foreach 循环。
示例: Iterate a Dictionary
var citiesOfCountry = new Dictionary<string, string>()
{
{"UK", "London, Manchester, Birmingham"},
{"USA", "Chicago, New York, Washington"},
{"India", "Mumbai, New Delhi, Pune"}
};
foreach(var city in citiesOfCountry)
{
Console.WriteLine("{0}, {1}", city.Key, city.Value);
}
输出:
UK, London, Manchester, BirminghamUSA, Chicago, New York, Washington,
India, Mumbai, New Delhi, Pune
实现 IEnumerable 接口(Implement IEnumerable Interface)
如前所述,foreach 循环可用于迭代已实现 IEnumerable
接口的任何类。
下面的示例演示如何实现 IEnumerable
接口以便将 foreach 循环与自定义类一起使用。
示例: Implement IEnumerable Interface
using System;
using System.Collections;
using System.Collections.Generic;
class Customer
{
public int Id { get; set; }
public string Name { get; set; }
}
class Shop : IEnumerable
{
private Customer[] custArray = new Customer[4];
public Shop()
{
custArray[0] = new Customer() { Id = 1, Name = "Steve" };
custArray[1] = new Customer() { Id = 2, Name = "Paul" };
custArray[2] = new Customer() { Id = 3, Name = "Joe" };
custArray[3] = new Customer() { Id = 4, Name = "Yash" };
}
//Here implementation for the GetEnumerator method.
public IEnumerator GetEnumerator()
{
return custArray.GetEnumerator();
}
}
class Program
{
public static void Main(string[] args)
{
Shop objShop = new Shop();
foreach (Customer cust in objShop)
{
Console.WriteLine(cust.Name);
}
}
}
输出:
StevePaul
Joe
Yash
如上所述,Shop
类实现了包含 GetEnumerator()
方法的 IEnumerable
接口。
这将使 Shop
类能够与返回Customer
对象的 foreach 循环一起使用。
本文内容总结: