foreach循环举例

另一种是foreach循环  List<String> list=new ArrayList<String>();
for(String str : list){
意思是把list里的每一个元素赋值给String变量str;

}

Java中for循环格式问题。

for (String str : h.keySet()) {

System.out.println(str);

}

请问这种写法是什么意思。。

for()括号里面是什么意思。怎么从来没遇到过这种,编译也通过了。

这是传说中的for each循环。

可以遍历数组、List、Set中的元素。

例如对于String[] arr = {"a","b","c"};

以下两种写法同效。

for(String a : arr){ System.out.println(a); }

for(int i=0;i<arr.length;i++){ System.out.println(arr[i]); }

对于List同理。

同时for each也可以迭代Set。

对于Set<String> set = new HashSet<String>();

以下两种写法同效。

for(String a : set){ System.out.print(a); }

Iterator it = set.iterator(); while(it.hasNext()){ System.out.print(it.next()); }

<think>嗯,用户之前问过关于C#的foreach循环的介绍,现在又要求举例说明如何使用foreach遍历List。看来用户可能已经理解了基本概念,现在需要具体的例子来巩固知识。我需要确保例子简洁明了,覆盖常见的使用场景。 首先,用户可能是一个刚开始学习C#的开发者,或者对集合操作不太熟悉。他们可能需要看到实际的代码示例来理解如何应用foreach在List上。之前的回答里已经有一个数组的例子,但List和数组在使用上有相似之处,不过List更动态,所以举List的例子会更贴切。 接下来,我应该考虑用户可能的深层需求。他们可能想知道如何在遍历时访问元素,或者处理特定类型的数据,比如自定义对象。此外,可能还想了解在遍历过程中是否能修改元素或集合,以及如何处理异常情况。 在之前的回答中,已经提到foreach不能修改集合元素(对于值类型)和遍历时不能增删元素,所以在举例时需要注意这些点。例如,可以展示如何遍历List<string>,然后展示一个包含自定义类的List,说明如何访问属性。同时,可以提醒用户如果在遍历时尝试修改集合会导致异常,并给出替代方法,比如使用for循环倒序遍历删除元素。 另外,用户可能对性能有疑问,但之前的回答提到了性能优化部分,可能不需要在例子中深入,除非有特别需要注意的地方。但如果有机会的话,可以简要提到使用for循环更高效的情况。 最后,确保代码示例正确,符合C#语法规范,并且注释清晰,解释每个步骤的作用。同时,保持语言简洁,结构清晰,方便用户一步步理解和实践。</think>让我们通过具体示例理解`foreach`遍历`List<T>`的操作: ### 基础示例:遍历字符串列表 ```csharp List<string> cities = new List<string> { "北京", "上海", "广州", "深圳" }; foreach (string city in cities) { Console.WriteLine($"当前城市: {city}"); } ``` 输出结果: ``` 当前城市: 北京 当前城市: 上海 当前城市: 广州 当前城市: 深圳 ``` ### 进阶示例:对象列表遍历 ```csharp // 定义数据类 public class Student { public string Name { get; set; } public int Score { get; set; } } List<Student> students = new List<Student> { new Student { Name = "张三", Score = 85 }, new Student { Name = "李四", Score = 92 }, new Student { Name = "王五", Score = 78 } }; foreach (Student stu in students) { Console.WriteLine($"{stu.Name}的成绩:{stu.Score}分"); } ``` 输出结果: ``` 张三的成绩:85分 李四的成绩:92分 王五的成绩:78分 ``` ### 关键注意点: 1. **元素修改限制** ```csharp foreach (Student stu in students) { stu.Score += 5; // 允许(修改引用类型对象的属性) // stu = new Student(); // 编译错误!禁止替换整个对象 } ``` 2. **集合修改限制** ```csharp foreach (var item in students) { students.Remove(item); // 运行时抛出InvalidOperationException } ``` 3. **类型推断优化** ```csharp foreach (var city in cities) // 使用var自动推断类型 { Console.WriteLine(city.ToUpper()); } ``` ### 实用技巧:带条件的遍历 ```csharp foreach (var stu in students.Where(s => s.Score >= 80)) { Console.WriteLine($"优秀学生:{stu.Name}"); } ``` 输出结果: ``` 优秀学生:张三 优秀学生:李四 ``` ### 性能建议: - 遍历`List<int>`等值类型集合时,优先使用`for`循环 - 需要过滤数据时,建议先通过`Where()`筛选再遍历 - 避免在循环内执行复杂操作,保持循环体轻量化 > 当需要修改集合内容时,推荐使用反向`for`循环: > ```csharp > for (int i = students.Count - 1; i >= 0; i--) > { > if (students[i].Score < 60) > { > students.RemoveAt(i); > } > } > ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值