循环语句
foreach 语句的本质
foreach是一个语法糖。

C# | VB | 输出 |
---|---|---|
int i = 0; while (i <= 2) { Console.WriteLine(i); i++; }; // 这个分号可有可无 |
Dim i As Integer = 0 While i <= 2 Console.WriteLine(i) i += 1 End While |
0 1 2 |
int i = 0; do { Console.WriteLine(i); i++; } while (i <= 2); // 这个分号必须写 |
Dim i As Integer = 0 Do Console.WriteLine(i) i += 1 Loop While i <= 2 |
0 1 2 |
/ | Dim i As Integer = 0 Do Console.WriteLine(i) i += 1 Loop Until i >= 3 |
0 1 2 |
/ | Dim i As Integer = 0 Do While i <= 2 Console.WriteLine(i) i += 1 Loop |
0 1 2 |
/ | Dim i As Integer = 0 Do Until i >= 3 Console.WriteLine(i) i += 1 Loop |
0 1 2 |
/ | Do Console.WriteLine("Hello") Loop |
Hello Hello Hello ……无限循环 |
for (; ; ) { Console.WriteLine("Hello"); } |
/ | Hello Hello Hello ……无限循环 |
for (int i = 2; i >= 0; i--) { Console.WriteLine(i); }; // 这个分号可有可无 |
For i As Integer = 2 To 0 Step -1 Console.WriteLine(i) Next |
2 1 0 |
int i = 0; do { for (int j = 1; j <= 10; j++) { Console.WriteLine(i.ToString() + j.ToString()); if (j >= 2) { break; } if (i >= 3) { goto enddo; } } i++; } while (true); enddo: ; |
Dim i As Integer = 0 Do For j As Integer = 1 To 10 Console.WriteLine(i & j) If j >= 2 Then Exit For End If If i >= 3 Then Exit Do End If Next i += 1 Loop |
01 02 11 12 21 22 31 |
for (int i = 1; i <= 10; i++) { if (i % 2 == 0) { continue; } Console.WriteLine(i); } |
For i As Integer = 1 To 10 If (i Mod 2 = 0) Then Continue For End If Console.WriteLine(i) Next |
1 3 5 7 9 |
int[] a = new int[] { 2, 4, 6 }; foreach (int i in a) { Console.WriteLine(i); } |
Dim a() As Integer = New Integer() {2, 4, 6} For Each i As Integer In a Console.WriteLine(i) Next |
2 4 6 |
foreach 语句的本质
foreach是一个语法糖。
IList<int> a = new List<int>();
foreach (int i in a)
{
Console.WriteLine(i);
}
会被编译器转换成foreach (int i in a)
{
Console.WriteLine(i);
}
IList<int> a = new List<int>();
IEnumerator<int> e = a.GetEnumerator();
try
{
while (e.MoveNext())
{
Console.WriteLine(e.Current);
}
}
finally
{
if (e != null)
e.Dispose();
}
IEnumerator<int> e = a.GetEnumerator();
try
{
while (e.MoveNext())
{
Console.WriteLine(e.Current);
}
}
finally
{
if (e != null)
e.Dispose();
}

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!