您的位置:

foreach遍历详解

一、foreach遍历数组

在C#中,遍历数组可以使用foreach循环,它会自动遍历数组的每个元素。

以下是遍历整型数组的示例代码:

int[] nums = {1, 2, 3, 4, 5};
foreach (int num in nums)
{
    Console.WriteLine(num);
}

上述示例中,定义了一个包含5个元素的整型数组nums,使用foreach循环遍历输出每个元素的值。

二、foreach遍历时报集合已修改

在使用foreach遍历集合或列表时,如果在遍历过程中修改了集合,则会抛出"集合已修改"的异常错误。

以下是遍历集合并删除其中的元素的示例代码:

List<int> nums = new List<int>{1, 2, 3, 4, 5};
foreach (int num in nums)
{
    if (num % 2 == 0)
    {
        nums.Remove(num);
    }
}

上述示例中,定义了一个包含5个元素的整型列表nums,使用foreach循环遍历并删除其中的偶数元素,会引发异常错误。

解决该问题的方法有两种,第一种是在遍历时创建一个新的列表,并将原列表中的元素复制到新列表中进行操作;第二种是在操作时使用for循环进行操作。

三、foreach遍历二维数组

遍历二维数组时需要使用嵌套foreach循环,内层循环遍历每一行中的元素,外层循环遍历每一行。

以下是遍历整型二维数组的示例代码:

int[,] nums = {{1, 2}, {3, 4}, {5, 6}};
foreach (int row in nums)
{
    foreach (int num in row)
    {
        Console.WriteLine(num);
    }
}

上述示例中,定义了一个包含3行2列的整型二维数组nums,使用嵌套foreach循环遍历输出每个元素的值。

四、foreach遍历数组对象

数组对象是C#中的高级特性,通过使用对象数组,可以将不同类型的对象存储在同一个数组中。

以下是遍历包含不同对象的数组的示例代码:

object[] objs = {"Hello, World!", 123, true};
foreach (object obj in objs)
{
    Console.WriteLine(obj);
}

上述示例中,定义了一个包含不同类型对象的数组objs,使用foreach循环遍历输出每个元素的值。

五、foreach遍历集合

与数组类似,集合也可以使用foreach循环进行遍历,遍历时会自动跳过null元素。

以下是遍历字符串集合的示例代码:

List<string> strs = new List<string>{"Hello", "World", null, "!"};
foreach (string str in strs)
{
    if (str != null)
    {
        Console.WriteLine(str);
    }
}

上述示例中,定义了一个包含4个字符串元素的列表strs,使用foreach循环遍历输出每个非null元素的值。

六、foreach遍历List集合

List集合是C#中一个常用的数据结构,它可以通过foreach循环遍历。

以下是遍历整型List集合的示例代码:

List<int> nums = new List<int>{1, 2, 3, 4, 5};
foreach (int num in nums)
{
    Console.WriteLine(num);
}

上述示例中,定义了一个包含5个整型元素的List集合nums,使用foreach循环遍历输出每个元素的值。

七、foreach遍历Map集合

Map集合是C#中的一种键值对数据结构,可以通过foreach循环遍历。

以下是遍历整型Map集合的示例代码:

Dictionary<string, int> dict = new Dictionary<string, int>{
    {"apple", 1}, {"banana", 2}, {"orange", 3}
};
foreach (KeyValuePair<string, int> kvp in dict)
{
    Console.WriteLine(kvp.Key + ": " + kvp.Value);
}

上述示例中,定义了一个包含3个键值对的整型Map集合dict,使用foreach循环遍历输出每个键值对的键和值。

八、foreach遍历对象

在C#中,遍历对象需要使用反射技术,通过获取对象的属性和字段进行遍历。

以下是遍历自定义对象的示例代码:

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
Person person = new Person{Name="Tom", Age=20};
foreach (var prop in person.GetType().GetProperties())
{
    Console.WriteLine(prop.Name + ": " + prop.GetValue(person));
}
foreach (var field in person.GetType().GetFields())
{
    Console.WriteLine(field.Name + ": " + field.GetValue(person));
}

上述示例中,定义了一个包含姓名和年龄属性的Person类,创建了一个Person对象person,使用反射技术遍历输出对象的属性和字段。

九、foreach遍历数组详解

遍历数组是C#编程中的基本操作之一,通过使用foreach循环可以方便地遍历数组中的所有元素。

以下是遍历整型数组的详细示例代码:

int[] nums = {1, 2, 3, 4, 5};
foreach (int num in nums)
{
    Console.WriteLine(num);
}

上述示例中,定义了一个包含5个元素的整型数组nums,使用foreach循环遍历输出每个元素的值。

使用foreach遍历数组时需要注意以下几点:

1. foreach循环遍历的数组必须是数组类型,不能是其他集合类型,否则会引发编译错误;

2. foreach循环每次迭代会自动提取下一个元素,可将其赋给一个变量;

3. foreach循环只能读取数组元素的值,不能修改,否则会引发编译错误;

4. foreach遍历数组时不必担心数组越界的问题,因为foreach循环会在遍历完成后自动退出循环。

十、js foreach遍历选取

在JavaScript中,没有直接实现foreach循环的方法,但可以通过使用for...in循环来实现,遍历对象中的所有可枚举属性。

以下是使用for...in循环遍历数组的示例代码:

var nums = [1, 2, 3, 4, 5];
for (var i in nums)
{
    console.log(nums[i]);
}

上述示例中,定义了一个包含5个元素的数组nums,使用for...in循环遍历输出每个元素的值。

使用for...in循环遍历数组时需要注意以下几点:

1. for...in循环遍历的是数组的索引,而不是数组元素本身;

2. 可以使用数组名加上索引值的方式来访问数组元素的值;

3. 使用for...in循环遍历数组时需要注意数组中可能存在的空值和未定义值,需要使用if语句进行判断。