.NET 帮助

C# Continue(开发人员如何使用)

Chipego
奇佩戈-卡琳达
2024年四月29日
分享:

介绍

控制流语句在编程中至关重要,因为它们规定了程序中指令的执行顺序。 在 C# 中,用于控制循环的三个基本语句是「continue」、「break」和「goto」。 这些语句为程序员提供了改变循环内执行流的能力,提高了代码的效率和可读性。 在本文中,我们深入探讨了 C# 中 continuebreak 方法的复杂性,探索它们的语法、应用和最佳实践。 在本文后面,我们还将学习如何使用来自Iron SoftwareIronPDF - 一个强大的C# PDF库来读取和编写PDF文档。

理解 ‘continue;’ 语句

continue 语句用于循环结构中,以跳过剩余的代码块并进入下一次循环迭代。它本质上是告诉程序控制跳过当前迭代的剩余代码并继续到下一次迭代。

语法

continue;
continue;
continue
$vbLabelText   $csharpLabel

示例

public class Program
{
    public static void Main()
    {
        Console.WriteLine("Demonstrate Continue Method in C#");
        Console.WriteLine("Print 1 to 10 skip 5");
        for (int i = 0; i < 10; i++)
        {
            if (i == 5)
            {
                continue; // Skips iteration when i equals 5
            }
            Console.WriteLine(i);
        }
    }
}
public class Program
{
    public static void Main()
    {
        Console.WriteLine("Demonstrate Continue Method in C#");
        Console.WriteLine("Print 1 to 10 skip 5");
        for (int i = 0; i < 10; i++)
        {
            if (i == 5)
            {
                continue; // Skips iteration when i equals 5
            }
            Console.WriteLine(i);
        }
    }
}
Public Class Program
	Public Shared Sub Main()
		Console.WriteLine("Demonstrate Continue Method in C#")
		Console.WriteLine("Print 1 to 10 skip 5")
		For i As Integer = 0 To 9
			If i = 5 Then
				Continue For ' Skips iteration when i equals 5
			End If
			Console.WriteLine(i)
		Next i
	End Sub
End Class
$vbLabelText   $csharpLabel

在这个例子中,当 i 等于 5 时,continue 语句被执行,跳过了该迭代中循环内的剩余代码。 因此,数字 5 将不会被打印出来,循环将进入下一次迭代。

输出

C# Continue(开发人员的工作原理):图 1 - 控制台输出显示由于 continue 语句跳过了案例 5

探索 "break; "方法

continue相反,break语句用于提前退出循环。 当遇到时,无论循环条件如何,它都会终止循环的执行。 通常用于在满足特定条件时提前退出一个循环,如 while 循环。

示例

int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
foreach (int number in numbers)
{
    if (number == 6)
    {
        break; // Exits loop when number equals 6
    }
    Console.WriteLine(number);
}
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
foreach (int number in numbers)
{
    if (number == 6)
    {
        break; // Exits loop when number equals 6
    }
    Console.WriteLine(number);
}
Dim numbers() As Integer = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
For Each number As Integer In numbers
	If number = 6 Then
		Exit For ' Exits loop when number equals 6
	End If
	Console.WriteLine(number)
Next number
$vbLabelText   $csharpLabel

在本例中,循环遍历数字数组。 当遇到数字6时,break语句被执行,导致循环提前终止。 因此,只打印数字 1 至 5。

探索 'goto;' 语句

goto 语句在 C# 中提供了一种将控制转移到同一方法、同一个 switch 语句或同一个循环内指定标签的方法。尽管 goto 可以作为一种强大的工具来改变执行流程以跳转语句,但由于其可能导致代码可读性和可维护性降低,因此在现代编程实践中常常不建议使用。 不过,在某些情况下,也可以有效、安全地使用 goto。

语法

C# 中 goto 语句的语法很简单:

goto label;
goto label;
GoTo label
$vbLabelText   $csharpLabel

其中,标签是一个标识符,后跟一个冒号(:),指示代码中的目标位置。

示例

考虑这样一种情况:当满足特定条件时,您希望提前退出嵌套循环。 您可以使用 goto 语句来实现这一目标:

for (int i = 0; i < 5; i++)
{
    for (int j = 0; j < 5; j++)
    {
        if (i * j > 10)
        {
            goto exitLoop;
        }
        Console.WriteLine($"i: {i}, j: {j}");
    }
}
exitLoop:
Console.WriteLine("Exited the nested loop prematurely.");
for (int i = 0; i < 5; i++)
{
    for (int j = 0; j < 5; j++)
    {
        if (i * j > 10)
        {
            goto exitLoop;
        }
        Console.WriteLine($"i: {i}, j: {j}");
    }
}
exitLoop:
Console.WriteLine("Exited the nested loop prematurely.");
For i As Integer = 0 To 4
	For j As Integer = 0 To 4
		If i * j > 10 Then
			GoTo exitLoop
		End If
		Console.WriteLine($"i: {i}, j: {j}")
	Next j
Next i
exitLoop:
Console.WriteLine("Exited the nested loop prematurely.")
$vbLabelText   $csharpLabel

在此示例中,当条件 i * j > 10 满足时,goto 语句将控制转移到 exitLoop 标签,从而有效地跳出嵌套循环。

介绍IronPDF - 综合性PDF库,来自Iron Software

IronPDF由Iron Software开发,是一个强大的C# PDF库,为.NET项目中的PDF处理提供一体化解决方案。 无论您需要创建、编辑、导出、保护、加载或操作 PDF 文档,IronPDF 都能满足您的需求。 以下是一些关键功能和使用案例:

  1. HTML 到 PDF 转换:无缝地将 HTML 内容转换为 PDF 格式。 您可以从 HTML、MVC、ASPX 甚至图像生成 PDF。

  2. 签署、编辑和读取PDF:IronPDF提供超过50项功能,使您可以签署、编辑和提取PDF文件中的内容。 无论是添加数字签名还是修改现有 PDF,IronPDF 都能让您一目了然。

  3. 跨平台支持:IronPDF 设计用于 C#、F# 和 VB.NET,并可在各种 .NET 版本上运行,包括 .NET Core、.NET Standard 和 .NET Framework。 它还可用于 Java、Node.js 和 Python。

  4. 兼容性和环境

    • .NET 版本:支持 C#、VB.NET 和 F#。

    • 项目类型:适用于网页(Blazor和WebForms)、桌面(WPF和MAUI)以及控制台应用程序。

    • 应用环境:兼容 Windows、Linux、Mac、Docker、Azure、AWS 等。

    • IDEs:与 Microsoft Visual Studio 和 JetBrains Rider 无缝集成。

    • 操作系统和处理器:在 Windows、Mac 和 Linux(x64、x86、ARM)上运行。
  5. PDF标准和编辑

    • 支持各种 PDF 版本(1.2 - 1.7)、PDF/UA 和 PDF/A。

    • 为 PDF 文件设置属性、安全性和压缩。

    • 编辑元数据、修订历史和文档结构。

    • 应用页面模板、页眉、页脚和页面设置。
  6. 性能优化

    • 完全支持多线程和异步,可高效生成 PDF。

    • 优先考虑准确性、易用性和速度。

    既然我们已经了解了IronPDF库,让我们编写一个应用程序来使用IronPDF以及continue语句、break语句和goto语句。

使用继续声明生成 PDF 文档

首先,让我们创建一个 Visual Studio 控制台应用程序

C# Continue(它如何为开发者工作):图 2 - 创建一个 Visual Studio 控制台应用程序

提供项目名称和地点。

C# Continue(对开发人员的工作原理):图3 - 提供项目名称

下一步,选择所需的 .NET 版本,然后单击创建。

现在使用下面的命令安装 IronPDF。

dotnet add package IronPdf --version 2024.4.2

现在,让我们使用控制语句生成 PDF 文档。

using System;
using System.Threading.Tasks;
using System.Diagnostics;
using IronPdf;
class Program
{
    public static async Task Main()
    {
        Console.WriteLine("Generate PDF document Using IronPDF");
        var htmlToPdf = new ChromePdfRenderer();
        var content = "<h1>Generate Numbers from 1 to 10, skip 5</h1>";
        for (int i = 0; i < 10; i++)
        {
            if (i == 5)
            {
                continue;
            }
            content += $"<p>{i}</p>";
        }
        content += "<h1>Generate Numbers from 1 to 10, stop at 7</h1>";
        for (int i = 0; i < 10; i++)
        {
            if (i == 7)
            {
                break;
            }
            content += $"<p>{i}</p>";
        }
        var pdf = htmlToPdf.RenderHtmlAsPdf(content);
        pdf.SaveAs("AwesomeIronPDF.pdf");
        Console.WriteLine("PDF generated successfully.");
    }
}
using System;
using System.Threading.Tasks;
using System.Diagnostics;
using IronPdf;
class Program
{
    public static async Task Main()
    {
        Console.WriteLine("Generate PDF document Using IronPDF");
        var htmlToPdf = new ChromePdfRenderer();
        var content = "<h1>Generate Numbers from 1 to 10, skip 5</h1>";
        for (int i = 0; i < 10; i++)
        {
            if (i == 5)
            {
                continue;
            }
            content += $"<p>{i}</p>";
        }
        content += "<h1>Generate Numbers from 1 to 10, stop at 7</h1>";
        for (int i = 0; i < 10; i++)
        {
            if (i == 7)
            {
                break;
            }
            content += $"<p>{i}</p>";
        }
        var pdf = htmlToPdf.RenderHtmlAsPdf(content);
        pdf.SaveAs("AwesomeIronPDF.pdf");
        Console.WriteLine("PDF generated successfully.");
    }
}
Imports System
Imports System.Threading.Tasks
Imports System.Diagnostics
Imports IronPdf
Friend Class Program
	Public Shared Async Function Main() As Task
		Console.WriteLine("Generate PDF document Using IronPDF")
		Dim htmlToPdf = New ChromePdfRenderer()
		Dim content = "<h1>Generate Numbers from 1 to 10, skip 5</h1>"
		For i As Integer = 0 To 9
			If i = 5 Then
				Continue For
			End If
			content &= $"<p>{i}</p>"
		Next i
		content &= "<h1>Generate Numbers from 1 to 10, stop at 7</h1>"
		For i As Integer = 0 To 9
			If i = 7 Then
				Exit For
			End If
			content &= $"<p>{i}</p>"
		Next i
		Dim pdf = htmlToPdf.RenderHtmlAsPdf(content)
		pdf.SaveAs("AwesomeIronPDF.pdf")
		Console.WriteLine("PDF generated successfully.")
	End Function
End Class
$vbLabelText   $csharpLabel

代码解释

  1. 最初,我们创建的内容将用于 PDF 文档。

  2. 我们将内容编写成 HTML 文档。

  3. 我们在 for 循环中使用 continue 语句以打印从 1 到 10,并跳过 5。

  4. 另外,我们使用break语句打印从1到7并中断。

  5. 然后,我们使用 ChromePdfRenderer 对象将 HTML 文档保存为 PDF 文档。

输出

C# 继续(开发人员如何使用):图 4 - 展示 continue 和 break 方法如何工作的示例输出

最佳实践和注意事项

  1. 清晰度和可读性:在大多数情况下,使用像breakcontinue或嵌套循环这样的结构化控制流语句可以使您的代码更易读且易于理解。 goto语句可能会使代码变得难以阅读,尤其是在大型代码库或使用过多时。

  2. 避免意外后果:误用goto可能导致代码混乱,增加理解程序行为的难度。 必须审慎使用goto,并确保其使用明确且有良好的文档记录。

  3. 错误处理goto 的一个常见用例是在错误处理场景中使用,它可以用于跳转到清理或错误处理例程。然而,现代 C# 代码库通常使用结构化异常处理(try-catch-finally)来进行错误处理,这种方法提供了一种更结构化和可读的方式。

  4. 性能考量:在性能方面,goto通常影响很小。 然而,使用goto的主要问题是可维护性和可读性,而不是性能。

许可证(可试用)

探索 IronPDF 许可详情

开发者试用许可证可用 获取试用许可证

请替换下图所示 appSettings.json 文件中的关键字。

{
  "IronPdf.License.LicenseKey": "The Key Here"
}

结论

总之,continuebreak 方法是控制 C# 中循环执行不可或缺的工具。 通过战略性地将这些语句纳入代码,可以提高代码的效率、可读性和可维护性。 虽然 C# 中的goto语句提供了一种改变执行流程的机制,但使用时应谨慎。 在大多数情况下,结构化控制流语句如breakcontinue或嵌套循环提供了更清晰且更易维护的解决方案。 然而,在某些特殊情况下,例如在某些错误处理情况下,可以有效、安全地使用 goto。 与任何编程结构一样,在决定是否使用 goto 时,权衡利弊并考虑代码的可读性和可维护性至关重要。

连同来自IronPDF - Comprehensive PDF Solutions库的Iron Software一起读取和生成PDF文档,开发人员可以获得开发现代应用程序的高级技能。

Chipego
软件工程师
Chipego 拥有出色的倾听技巧,这帮助他理解客户问题并提供智能解决方案。他在 2023 年加入 Iron Software 团队,此前他获得了信息技术学士学位。IronPDF 和 IronOCR 是 Chipego 主要专注的两个产品,但他对所有产品的了解每天都在增长,因为他不断找到支持客户的新方法。他喜欢 Iron Software 的合作氛围,公司各地的团队成员贡献他们丰富的经验,以提供有效的创新解决方案。当 Chipego 离开办公桌时,你经常可以发现他在看书或踢足球。
< 前一页
Html Agility Pack C#(它如何为开发人员工作)
下一步 >
Bugsnag C#(对开发者的工作原理)