在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
在本教程中,我们将介绍开发人员的必备工具 "C# foreach "循环。 foreach "循环简化了对集合进行迭代的过程,使对每个项目执行操作变得更加容易,而无需担心底层细节。 我们将讨论 foreach
的重要性、其用例以及如何在 C# 代码中实现它。
foreach
循环对于开发人员来说,"foreach "循环是以简洁易读的方式遍历集合的强大工具。 它简化了代码,减少了出错的机会,因为无需手动管理索引或集合项的计数。 在变量声明方面,"foreach "循环有五个变量声明,而 for 循环只有三个变量声明。
foreach
的用例包括:
C# 中有不同类型的集合,用于在单个对象中存储一组项目。 这些工具包括数组、列表、字典等。 foreach "循环是一个有用的工具,可用于任何实现 IEnumerable 或 IEnumerable 接口的集合。
一些常见的集合类型包括
字典:键值对的集合,其中每个键都是唯一的。
System.Collections.Generic "命名空间包含 "ForEach "扩展方法,可用于任何内置的集合类。
现在,我们对集合和 for each 循环有了基本的了解,下面让我们深入了解其语法,看看它在 C# 中是如何工作的。
foreach (variableType variableName in collection)
{
// Code to execute for each item
}
foreach (variableType variableName in collection)
{
// Code to execute for each item
}
For Each variableName As variableType In collection
' Code to execute for each item
Next variableName
变量类型 "代表集合中项目的数据类型,"变量名 "是循环中当前项目的名称(循环变量),而 collection
指的是要遍历的集合。
举个例子,我们有一个整数列表,想要求列表中所有元素的和。
using System;
using System.Collections.Generic;
// Create a list of integers
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
// Initialize a variable to store the sum
int sum = 0;
// Iterate through the list using for each loop
foreach (int number in numbers)
{
sum += number;
}
// Print the sum
Console.WriteLine("The sum of the elements is: " + sum);
using System;
using System.Collections.Generic;
// Create a list of integers
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
// Initialize a variable to store the sum
int sum = 0;
// Iterate through the list using for each loop
foreach (int number in numbers)
{
sum += number;
}
// Print the sum
Console.WriteLine("The sum of the elements is: " + sum);
IRON VB CONVERTER ERROR developers@ironsoftware.com
当循环执行时,输出结果如下。
The sum of the elements is: 15
The sum of the elements is: 15
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'The sum @of the elements is: 15
在上面的示例中,我们首先创建了一个名为 "numbers "的整数列表,并初始化了一个变量 sum 来存储元素的 "sum"。 然后,我们使用 foreach 循环遍历列表,并将每个元素的值加到总和中。 最后,我们将总和打印到控制台。 我们还可以使用类似的 foreach 循环打印数组。
现在,我们对如何使用 for each 循环有了基本的了解,下面我们来讨论一些变化和最佳实践。
只读迭代:for each 循环最适合只读迭代,因为在迭代时修改集合可能会导致意外结果或运行时错误。 如果您需要在迭代过程中修改集合,请考虑使用传统的 for 循环或创建一个包含所需修改的新集合。
使用 var 关键字:您可以使用 var
关键字让编译器推断数据类型,而不是明确指定集合中元素的数据类型。 这样可以使代码更加简洁,更易于维护。
示例:
foreach (var number in numbers)
{
Console.WriteLine(number);
}
foreach (var number in numbers)
{
Console.WriteLine(number);
}
For Each number In numbers
Console.WriteLine(number)
Next number
迭代字典: 使用 for each 循环迭代字典时,需要使用 KeyValuePair
结构。 该结构表示字典中的键值对。
示例:
Dictionary<string, int> ageDictionary = new Dictionary<string, int>
{
{ "Alice", 30 },
{ "Bob", 25 },
{ "Charlie", 22 }
};
foreach (KeyValuePair<string, int> entry in ageDictionary)
{
Console.WriteLine($"{entry.Key} is {entry.Value} years old.");
}
Dictionary<string, int> ageDictionary = new Dictionary<string, int>
{
{ "Alice", 30 },
{ "Bob", 25 },
{ "Charlie", 22 }
};
foreach (KeyValuePair<string, int> entry in ageDictionary)
{
Console.WriteLine($"{entry.Key} is {entry.Value} years old.");
}
Dim ageDictionary As New Dictionary(Of String, Integer) From {
{"Alice", 30},
{"Bob", 25},
{"Charlie", 22}
}
For Each entry As KeyValuePair(Of String, Integer) In ageDictionary
Console.WriteLine($"{entry.Key} is {entry.Value} years old.")
Next entry
LINQ 和 for each: LINQ(语言综合查询)是 C# 中的一项强大功能,可让您以更声明的方式查询和操作数据。 您可以使用 LINQ
和 for each 循环来创建更具表现力和更高效的代码。
示例:
using System;
using System.Collections.Generic;
using System.Linq;
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
// Use LINQ to filter out even numbers
var evenNumbers = numbers.Where(n => n % 2 == 0);
// Iterate through the even numbers using for each loop
foreach (var number in evenNumbers)
{
Console.WriteLine(number);
}
using System;
using System.Collections.Generic;
using System.Linq;
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
// Use LINQ to filter out even numbers
var evenNumbers = numbers.Where(n => n % 2 == 0);
// Iterate through the even numbers using for each loop
foreach (var number in evenNumbers)
{
Console.WriteLine(number);
}
Imports System
Imports System.Collections.Generic
Imports System.Linq
Private numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
' Use LINQ to filter out even numbers
Private evenNumbers = numbers.Where(Function(n) n Mod 2 = 0)
' Iterate through the even numbers using for each loop
For Each number In evenNumbers
Console.WriteLine(number)
Next number
在本节中,我们将扩展我们的 "C# for each "循环教程,介绍 IronPDF,这是一个在 C# 中处理 PDF 文件的流行库。 我们将演示如何将 foreach 循环与 IronPDF 结合使用,根据数据集合生成 PDF 报告。
IronPDF文档是一个功能强大的库,可用于用 C# 创建、编辑和提取 PDF 文件中的内容。 它为处理 PDF 文档提供了易于使用的 API,是需要将 PDF 功能纳入其应用程序的开发人员的绝佳选择。
IronPDF 的一些主要功能包括
要开始使用 IronPDF,您需要安装 IronPDF NuGet 软件包。 您可以按照以下说明进行翻译安装 IronPDF.
在本示例中,我们将使用 IronPDF 库和 for each 循环来创建一份产品列表的 PDF 报告,包括产品名称和价格。
首先,让我们创建一个简单的 Product 类来表示产品:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public Product(string name, decimal price)
{
Name = name;
Price = price;
}
}
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public Product(string name, decimal price)
{
Name = name;
Price = price;
}
}
Public Class Product
Public Property Name() As String
Public Property Price() As Decimal
Public Sub New(ByVal name As String, ByVal price As Decimal)
Me.Name = name
Me.Price = price
End Sub
End Class
接下来,让我们创建一个产品对象列表来生成 PDF 报告:
List<Product> products = new List<Product>
{
new Product("Product A", 29.99m),
new Product("Product B", 49.99m),
new Product("Product C", 19.99m),
};
List<Product> products = new List<Product>
{
new Product("Product A", 29.99m),
new Product("Product B", 49.99m),
new Product("Product C", 19.99m),
};
Dim products As New List(Of Product) From {
New Product("Product A", 29.99D),
New Product("Product B", 49.99D),
New Product("Product C", 19.99D)
}
现在,我们可以使用 IronPDF 和 for each 循环来生成包含产品信息的 PDF 报告:
using System;
using System.Collections.Generic;
using IronPdf;
// Create a list of products
List<Product> products = new List<Product>
{
new Product("Product A", 29.99m),
new Product("Product B", 49.99m),
new Product("Product C", 19.99m),
};
// Initialize an HTML string to store the report content
string htmlReport = "<table><tr><th>Product Name</th><th>Price</th></tr>";
// Iterate through the list of products using for each loop
foreach (var product in products)
{
// Add product information to the HTML report
htmlReport += $"<tr><td>{product.Name}</td><td>${product.Price}</td></tr>";
}
// Close the table tag in the HTML report
htmlReport += "</table>";
// Create a new instance of the HtmlToPdf class
var htmlToPdf = new ChromePdfRenderer();
// Generate the PDF from the HTML report
var PDF = htmlToPdf.RenderHtmlAsPdf(htmlReport);
// Save the PDF to a file
PDF.SaveAs("ProductReport.PDF");
// Inform the user that the PDF has been generated
Console.WriteLine("ProductReport.PDF has been generated.");
using System;
using System.Collections.Generic;
using IronPdf;
// Create a list of products
List<Product> products = new List<Product>
{
new Product("Product A", 29.99m),
new Product("Product B", 49.99m),
new Product("Product C", 19.99m),
};
// Initialize an HTML string to store the report content
string htmlReport = "<table><tr><th>Product Name</th><th>Price</th></tr>";
// Iterate through the list of products using for each loop
foreach (var product in products)
{
// Add product information to the HTML report
htmlReport += $"<tr><td>{product.Name}</td><td>${product.Price}</td></tr>";
}
// Close the table tag in the HTML report
htmlReport += "</table>";
// Create a new instance of the HtmlToPdf class
var htmlToPdf = new ChromePdfRenderer();
// Generate the PDF from the HTML report
var PDF = htmlToPdf.RenderHtmlAsPdf(htmlReport);
// Save the PDF to a file
PDF.SaveAs("ProductReport.PDF");
// Inform the user that the PDF has been generated
Console.WriteLine("ProductReport.PDF has been generated.");
Imports System
Imports System.Collections.Generic
Imports IronPdf
' Create a list of products
Private products As New List(Of Product) From {
New Product("Product A", 29.99D),
New Product("Product B", 49.99D),
New Product("Product C", 19.99D)
}
' Initialize an HTML string to store the report content
Private htmlReport As String = "<table><tr><th>Product Name</th><th>Price</th></tr>"
' Iterate through the list of products using for each loop
For Each product In products
' Add product information to the HTML report
htmlReport &= $"<tr><td>{product.Name}</td><td>${product.Price}</td></tr>"
Next product
' Close the table tag in the HTML report
htmlReport &= "</table>"
' Create a new instance of the HtmlToPdf class
Dim htmlToPdf = New ChromePdfRenderer()
' Generate the PDF from the HTML report
Dim PDF = htmlToPdf.RenderHtmlAsPdf(htmlReport)
' Save the PDF to a file
PDF.SaveAs("ProductReport.PDF")
' Inform the user that the PDF has been generated
Console.WriteLine("ProductReport.PDF has been generated.")
在整个教程中,我们探讨了 "C# for each "循环的基本原理、其重要性、用例以及如何在代码中实现它。 我们还介绍了 IronPDF(一个功能强大的库,用于在 C# 中处理 PDF 文件),并演示了如何将 for each 循环与 IronPDF 结合使用,根据数据集合生成 PDF 报告。
不断学习和积累技能,您很快就能充分发挥 for each 循环和其他 C# 功能的潜力,创建强大而高效的应用程序。 IronPDF 提供了一个IronPDF 免费试用版用于测试库。 如果您决定购买,IronPdf 许可证起价为 $749。