跳至页脚内容
.NET 帮助

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

在编程领域中,循环是不可或缺的结构,基于指定的条件,便利批量执行代码块。 在 C# 可用的众多循环类型中,'while' 循环因其简单性和多功能性而突出。 凭借其简洁的语法和强大的功能,'while' 循环使开发人员能够反复执行代码迭代,只要指定的条件或迭代语句成立。

本全面指南深入探讨C# 'while' 循环的细微差别,提供详细的解释、实用的代码示例和最佳实践,帮助开发人员掌握这一基础构造。 它还讨论了如何在 C# 中使用 while 关键字生成 PDF 报告数据,使用 IronPDF

1. 理解 C# While 循环

C# 'while' 循环的核心是,只要指定的条件或迭代值评估为 true,就会反复执行一段代码。 'while' 循环语句的语法如下:

// while loop
while (condition)
{
    // Code block to execute
}
// while loop
while (condition)
{
    // Code block to execute
}
' while loop
Do While condition
	' Code block to execute
Loop
$vbLabelText   $csharpLabel

这里,condition 表示布尔表达式或决定循环是否应继续迭代的循环变量。 只要 condition 仍然为 true,封闭在 'while' 循环大括号中的代码块将被反复执行。 一旦 condition 评估为 false,循环终止,程序和控制流移动到 'while' 循环之后的语句。

2. 实用代码示例

让我们探索实用的例子,来说明在各种场景中使用 'while' 循环。

例子 1: 倒计时计时器

// Countdown Timer Example
int count = 5;

// Loop while count is greater than 0
while (count > 0)
{
    Console.WriteLine($"Countdown: {count}");
    count--; // Decrement count
}

Console.WriteLine("Blastoff!");
// Countdown Timer Example
int count = 5;

// Loop while count is greater than 0
while (count > 0)
{
    Console.WriteLine($"Countdown: {count}");
    count--; // Decrement count
}

Console.WriteLine("Blastoff!");
' Countdown Timer Example
Dim count As Integer = 5

' Loop while count is greater than 0
Do While count > 0
	Console.WriteLine($"Countdown: {count}")
	count -= 1 ' Decrement count
Loop

Console.WriteLine("Blastoff!")
$vbLabelText   $csharpLabel

在此示例中,'while' 循环在 count 变量大于 0 时迭代。在每次迭代中,它会将 count 递减 1,并打印倒计时值。 一旦 count 变为 0,循环终止,并显示“Blastoff!”。

输出

C# While (How It Works For Developers): 图 1 - 倒计时计时器输出

例子 2: 用户输入验证

// User Input Validation Example
string userInput;

// Infinite loop until a valid input is received
while (true)
{
    Console.Write("Enter a positive number: ");
    userInput = Console.ReadLine();

    // Try to parse input and check if it's a positive number
    if (int.TryParse(userInput, out int number) && number > 0)
    {
        Console.WriteLine($"You entered: {number}");
        break; // Exit loop if valid input
    }
    else
    {
        Console.WriteLine("Invalid input. Please try again.");
    }
}
// User Input Validation Example
string userInput;

// Infinite loop until a valid input is received
while (true)
{
    Console.Write("Enter a positive number: ");
    userInput = Console.ReadLine();

    // Try to parse input and check if it's a positive number
    if (int.TryParse(userInput, out int number) && number > 0)
    {
        Console.WriteLine($"You entered: {number}");
        break; // Exit loop if valid input
    }
    else
    {
        Console.WriteLine("Invalid input. Please try again.");
    }
}
' User Input Validation Example
Dim userInput As String

' Infinite loop until a valid input is received
Do
	Console.Write("Enter a positive number: ")
	userInput = Console.ReadLine()

	' Try to parse input and check if it's a positive number
	Dim number As Integer
	If Integer.TryParse(userInput, number) AndAlso number > 0 Then
		Console.WriteLine($"You entered: {number}")
		Exit Do ' Exit loop if valid input
	Else
		Console.WriteLine("Invalid input. Please try again.")
	End If
Loop
$vbLabelText   $csharpLabel

在此示例中,'while' 循环会无限期地继续,直到用户输入一个有效的正数。 它提示用户输入,验证输入,并在输入为有效的正数时跳出循环。

输出

C# While (How It Works For Developers): 图 2 - 输入验证输出

例子 3: 生成斐波那契数列

// Generating Fibonacci Series Example
int a = 0, b = 1, nextTerm;

Console.WriteLine("Fibonacci Series:");

// Compute Fibonacci numbers up to 1000
while (a <= 1000)
{
    Console.WriteLine(a); // Print current Fibonacci number
    nextTerm = a + b; // Calculate next term
    a = b; // Update a to the next term
    b = nextTerm; // Update b to nextTerm
}
// Generating Fibonacci Series Example
int a = 0, b = 1, nextTerm;

Console.WriteLine("Fibonacci Series:");

// Compute Fibonacci numbers up to 1000
while (a <= 1000)
{
    Console.WriteLine(a); // Print current Fibonacci number
    nextTerm = a + b; // Calculate next term
    a = b; // Update a to the next term
    b = nextTerm; // Update b to nextTerm
}
' Generating Fibonacci Series Example
Dim a As Integer = 0, b As Integer = 1, nextTerm As Integer

Console.WriteLine("Fibonacci Series:")

' Compute Fibonacci numbers up to 1000
Do While a <= 1000
	Console.WriteLine(a) ' Print current Fibonacci number
	nextTerm = a + b ' Calculate next term
	a = b ' Update a to the next term
	b = nextTerm ' Update b to nextTerm
Loop
$vbLabelText   $csharpLabel

此代码片段使用 'while' 循环生成斐波那契数列,最大值为 1000。它初始化两个变量 ab 为前两个斐波那契数,并迭代计算和打印后续项,直到 a 超过 1000。

输出

C# While (How It Works For Developers): 图 3 - 斐波那契数列输出

3. 使用 C# While 循环的最佳实践

虽然 'while' 循环提供了灵活性和便捷性,但遵循最佳实践以确保代码的高效和可维护性非常重要:

  1. 确保终止:始终确保循环的条件最终为 false,以防止无限循环,这可能导致程序冻结或崩溃。
  2. 初始化循环变量:在循环外初始化循环控制变量,以避免因未初始化的变量导致的意外行为或无限循环。
  3. 更新循环变量:在循环体内更新循环控制变量,以确保向循环终止条件进展。
  4. 谨慎使用 Break 和 Continue:虽然 breakcontinue 语句有用,但过多使用会导致难以理解和阅读的代码。 如果大量使用 breakcontinue,请考虑替代方法或重构复杂的循环。
  5. 保持循环条件简单:保持循环条件简明扼要,以增强可读性并最大限度地减少逻辑错误的风险。

4. IronPDF

IronPDF 是 C# 开发领域的基石解决方案,为开发人员提供强大的工具包,可以在其应用程序中无缝生成、编辑和操作 PDF 文档。 凭借其直观的 API 和丰富的功能集,IronPDF 使开发人员能够轻松将 PDF 功能集成到他们的 C# 项目中,释放出文件生成、报告和内容分发的无数可能性。

4.1. 安装 IronPDF

IronPDF 可以通过 NuGet 包管理器控制台轻松安装。 只需运行以下命令即可安装 IronPDF:

Install-Package IronPdf

4.2. 将 IronPDF 与 C# While 循环集成

让我们考虑一个示例,其中我们使用 'while' 循环动态填充数据并使用 IronPDF 生成 PDF 报告。

using IronPdf;
using System;

class Program
{
    static void Main(string[] args)
    {
        // Initialize PDF Renderer
        var pdfRenderer = new ChromePdfRenderer();

        // Initialize HTML content
        string htmlContent = "<h1>Dynamic Data Report</h1><ul>";

        // Generate dynamic data using a while loop
        int count = 1;
        while (count <= 10)
        {
            htmlContent += $"<li>Data Point {count}</li>";
            count++;
        }
        htmlContent += "</ul>";

        // Render HTML content as PDF
        var pdfOutput = pdfRenderer.RenderHtmlAsPdf(htmlContent);

        // Save PDF to file
        var outputPath = "Dynamic_Data_Report.pdf";
        pdfOutput.SaveAs(outputPath);

        // Display success message
        Console.WriteLine($"PDF report generated successfully: {outputPath}");
    }
}
using IronPdf;
using System;

class Program
{
    static void Main(string[] args)
    {
        // Initialize PDF Renderer
        var pdfRenderer = new ChromePdfRenderer();

        // Initialize HTML content
        string htmlContent = "<h1>Dynamic Data Report</h1><ul>";

        // Generate dynamic data using a while loop
        int count = 1;
        while (count <= 10)
        {
            htmlContent += $"<li>Data Point {count}</li>";
            count++;
        }
        htmlContent += "</ul>";

        // Render HTML content as PDF
        var pdfOutput = pdfRenderer.RenderHtmlAsPdf(htmlContent);

        // Save PDF to file
        var outputPath = "Dynamic_Data_Report.pdf";
        pdfOutput.SaveAs(outputPath);

        // Display success message
        Console.WriteLine($"PDF report generated successfully: {outputPath}");
    }
}
Imports IronPdf
Imports System

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Initialize PDF Renderer
		Dim pdfRenderer = New ChromePdfRenderer()

		' Initialize HTML content
		Dim htmlContent As String = "<h1>Dynamic Data Report</h1><ul>"

		' Generate dynamic data using a while loop
		Dim count As Integer = 1
		Do While count <= 10
			htmlContent &= $"<li>Data Point {count}</li>"
			count += 1
		Loop
		htmlContent &= "</ul>"

		' Render HTML content as PDF
		Dim pdfOutput = pdfRenderer.RenderHtmlAsPdf(htmlContent)

		' Save PDF to file
		Dim outputPath = "Dynamic_Data_Report.pdf"
		pdfOutput.SaveAs(outputPath)

		' Display success message
		Console.WriteLine($"PDF report generated successfully: {outputPath}")
	End Sub
End Class
$vbLabelText   $csharpLabel

在此示例中,我们初始化了一个包含标题和无序列表的 HTML 字符串。然后使用 'while' 语句动态生成带有增量数据点的列表项。 HTML 内容使用 IronPDF 的 ChromePdfRenderer 渲染为 PDF,生成的 PDF 报告保存到名为“Dynamic_Data_Report.pdf”的文件中。 这演示了如何将 'while' 循环与 IronPDF 无缝集成,以在 C# 应用程序中生成动态且可自定义的 PDF 文档。

输出

C# While (How It Works For Developers): 图 4 - 带有 IronPDF 输出的 While 循环

5. 结论

总之,'while' 循环是 C# 编程中的一个基础结构,为开发人员提供了一种灵活且强大的迭代执行代码的机制,基于指定的条件。 通过理解与 'while' 循环相关的语法、用法和最佳实践,开发人员可以有效地利用这一结构来解决各种编程挑战。 从简单的倒计时器到复杂的数据处理任务,'while' 循环使开发人员能够编写高效且可维护的代码。

此外,与 IronPDF 这样的工具结合使用,'while' 循环可以用来生成动态和视觉上吸引人的 PDF 文档,增强 C# 应用程序的能力。 随着开发人员继续探索 C# 编程的可能性,掌握 'while' 循环对于构建稳健和可扩展的软件解决方案至关重要。

IronPDF 的文档可在 IronPDF 文档页面 上找到。

常见问题解答

C# 'while' 循环在编程中的主要功能是什么?

C# 'while' 循环的主要功能是当指定条件保持为真时,反复执行一段代码块。这使它成为一种根据动态条件需要重复操作的任务的多用途工具。

如何在 C# 中使用 'while' 循环进行 PDF 生成?

您可以在 C# 中使用 'while' 循环来动态生成数据,这些数据可以使用 IronPDF 转换为 PDF 报告。例如,循环可以填充 HTML 内容,然后将其呈现为 PDF 文档。

C# 中 'while' 循环的一些实际应用是什么?

C# 中 'while' 循环的实际应用包括倒计时器、用户输入验证、生成斐波那契数列,以及为报告或文档动态填充数据。

在 C# 中使用 'while' 循环时应该遵循哪些最佳实践?

在 C# 中使用 'while' 循环的最佳实践包括确保循环条件变为假以避免无限循环,适当初始化和更新循环变量,以及保持简单的循环条件以提高可读性。

如何在 C# 使用 'while' 循环时防止无限循环?

为防止无限循环,确保设计循环条件以最终求值为假。这可以通过正确更新循环变量和明确的终止条件实现。

除了迭代任务之外,可以使用 'while' 循环完成其他任务吗?

是的,'while' 循环可用于各种任务,如条件检查、数据处理和动态内容生成,使其成为开发人员的灵活工具。

在实现 'while' 循环时要避免的常见错误是什么?

一个常见错误是未能在循环中正确更新循环条件,这可能导致无限循环或应用程序中的意外行为。

如何在 C# 中提前退出 'while' 循环,而不完成所有迭代?

您可以使用 break 语句提前退出 'while' 循环,它会立即停止循环并将控制权移至循环后的代码。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。