C#——for循环

C#——for循环

(一)c#中for循环有两种格式:

(1)第一种形式:

for(code1;code2;code)

{

}

(2)每二种形式:

for(;;)

{

}

具体的内容看下图:

(二)实例

例1:计算1到100之间(包含1、100)所有整数的和(用for循环)。

namespace for循环 { class Program { static void Main(string[] args) { //用for实现计算1到100之间(包含1、100)所有整数的和。 int sum = 0; for (int i = 1; i <= 100; i++) //<=还是<,i=0还是i=1 { sum = sum + i; } Console.WriteLine(sum); Console.ReadKey(); } } }

注意:for的终止条件 是 <= 还是 <


例2:用for实现计算200到300之间(包含200、300)所有整数的和。

实现代码:

namespace for循环 { class Program { static void Main(string[] args) { //用for实现计算200到300之间(包含200、300)所有整数的和。 int sum = 0; for (int i = 200; i <= 300; i++) { sum = sum + i; } Console.WriteLine(sum); Console.ReadKey(); } } }


例3:不断打印字符串"aaaaa"

namespace for循环 { class Program { static void Main(string[] args) { for (; ; ) //for的三段都可以省略,但是不能丢了“;” { Console.WriteLine("aaaaa"); } Console.ReadKey(); } } }


注意:for的三段都可以省略,但是不能丢了“;”,这一定也是一个死循环

### C# 中 `foreach` 循环的使用方法及优化技巧 #### 一、`foreach` 循环的基础用法 在 C# 编程中,`foreach` 循环是一种专门用于遍历集合类型的控制结构。它的语法简单明了,适用于数组、列表以及其他实现了 `IEnumerable` 或 `IEnumerator` 接口的对象[^2]。 以下是基础用法的一个典型例子: ```csharp List<int> numbers = new List<int> { 1, 2, 3, 4, 5 }; foreach (int number in numbers) { Console.WriteLine(number); } ``` 上述代码展示了如何通过 `foreach` 遍历一个整数列表,并逐一打印每个元素[^3]。 --- #### 二、`foreach` 的内部工作机制 尽管 `foreach` 提供了一种优雅的方式来访问集合中的每一个元素,但它实际上依赖于迭代器模式来实现底层操作。具体来说,每次调用都会创建一个新的枚举器对象(即 `IEnumerator`),并通过该对象依次获取下一个元素直到结束[^1]。 这种设计虽然简化了开发者的编码过程,但也带来了一些潜在开销——特别是当频繁地对大型集合进行多次遍历时,可能会因为重复实例化枚举器而导致额外的内存消耗和性能损失。 --- #### 三、性能优化建议 为了更高效地使用 `foreach` 循环,在实际项目中可以考虑以下几个方面: 1. **避免不必要的转换** 如果目标集合已经支持直接枚举,则无需将其显式转化为另一种形式再参与循环。例如,对于已知类型为 `IList<T>` 的变量可以直接传入 `foreach` 而不必先转成数组或其它容器。 2. **减少嵌套层次** 过深的嵌套会增加每轮迭代的成本,因此应尽量保持逻辑清晰扁平化。如果某些条件判断可以在进入主体之前完成预筛选,则有助于降低整体复杂度[^4]。 3. **利用并行处理技术** 当面对海量数据集时,单线程串行执行显然不是最佳策略。此时可引入 .NET Framework 提供的高级特性之一 —— `Parallel.ForEach` 方法来进行并发运算[^5]。 下面是一个简单的对比案例展示传统 vs 并行版本的区别: ```csharp // 常规做法 var largeDataCollection = Enumerable.Range(1, 1_000_000).ToList(); Stopwatch stopwatch = Stopwatch.StartNew(); foreach(var item in largeDataCollection){ DoSomeWork(item); // 模拟耗时任务 } Console.WriteLine($"Sequential Execution Time:{stopwatch.ElapsedMilliseconds}ms"); // 改进后的并行方案 stopwatch.Restart(); Parallel.ForEach(largeDataCollection,(item)=>{ DoSomeWork(item); // 同样模拟耗时任务 }); Console.WriteLine($"Parallel Execution Time:{stopwatch.ElapsedMilliseconds}ms"); ``` 注意这里假设存在名为 `DoSomeWork()` 函数代表任意业务逻辑;另外由于硬件环境差异等因素影响,以上两种方式的实际运行效率需视具体情况而定。 --- #### 四、注意事项与常见误区 最后还需强调一点的是,尽管可以通过多种手段提升基于 `foreach` 结构的应用表现,但仍有一些场景并不适合盲目追求极致速度牺牲其他方面的考量。比如读取只允许顺序存取的数据源或者修改正在被迭代的目标序列等情况均有可能引发不可预期的结果甚至崩溃风险。 总之合理权衡各方面因素之后作出恰当决策才是最重要的原则所在! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值