foreach
是 C# 中用来遍历集合(如数组、列表、字典等)的关键字,它简化了对集合的遍历操作,避免了手动使用索引。foreach
会自动处理集合中的每个元素,并在循环体内执行指定的操作。
基本语法
foreach (var item in collection)
{
// 执行对 item 的操作
}
var item
:item
是循环变量,代表集合中的每个元素,类型会根据集合类型自动推断。你也可以明确指定类型。in collection
:collection
是你要遍历的集合,可以是数组、列表、字典等。
示例 1:遍历数组
假设有一个整型数组,我们可以使用 foreach
来遍历它:
int[] numbers = { 1, 2, 3, 4, 5 };
foreach (int number in numbers)
{
Console.WriteLine(number); // 输出数组中的每个元素
- 在上面的代码中,
numbers
是一个数组,int number
是每次循环时取到的元素。 - 每次迭代时,
number
会依次获得数组中的元素值(1
,2
,3
,4
,5
)。
示例 2:遍历集合(List)
List<string> fruits = new List<string> { "Apple", "Banana", "Orange" };
foreach (string fruit in fruits)
{
Console.WriteLine(fruit); // 输出每个水果名称
}
fruits
是一个字符串列表,string fruit
是每次循环时取到的列表元素。- 输出为:
-
Apple Banana Orange
示例 3:遍历字典(Dictionary)
在字典中,foreach
可以用来遍历键值对:
Dictionary<string, int> fruitQuantities = new Dictionary<string, int>
{
{ "Apple", 10 },
{ "Banana", 5 },
{ "Orange", 8 }
};
foreach (KeyValuePair<string, int> pair in fruitQuantities)
{
Console.WriteLine($"Fruit: {pair.Key}, Quantity: {pair.Value}");
}
KeyValuePair<string, int>
是字典中每个元素的类型,它包含Key
(键)和Value
(值)。- 输出为:
-
Fruit: Apple, Quantity: 10 Fruit: Banana, Quantity: 5 Fruit: Orange, Quantity: 8
示例 4:遍历字符串(字符数组)
你还可以使用 foreach
遍历字符串的每个字符:
string message = "Hello, World!";
foreach (char c in message)
{
Console.WriteLine(c); // 输出字符串中的每个字符
}
message
是字符串,char c
是每次循环时取到的字符。- 输出为:
H e l l o , W o r l d !
示例 5:使用 foreach
修改集合(不可行)
foreach
不允许你在循环中修改集合的元素(如添加、删除),因为它会导致集合在遍历过程中发生变化,从而可能引发错误。
比如,下面的代码会编译错误:
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
// 错误:不能在 foreach 中修改集合的元素
foreach (int number in numbers)
{
if (number == 3)
{
numbers.Remove(number); // 会抛出 InvalidOperationException
}
}
示例 6:使用 foreach
结合 continue
和 break
continue
:跳过当前循环,进入下一次循环。break
:终止整个foreach
循环。
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
foreach (int number in numbers)
{
if (number == 3)
{
continue; // 跳过当前循环(不会执行 Console.WriteLine)
}
if (number == 5)
{
break; // 终止整个循环
}
Console.WriteLine(number);
}
- 输出:
-
1 2 4
总结
foreach
用于简化集合的遍历,无需关注索引,适用于数组、列表、字典等集合类型。- 在遍历过程中,你可以直接访问集合中的每个元素。
- 注意:
foreach
不支持修改集合元素(如添加或删除)。如果需要修改集合,应该使用for
循环。