.NET 幫助

C# For Each(開發人員如何運作)

發佈 2023年5月16日
分享:

在本教程中,我們將介紹「C# foreach」迴圈,這是一個開發人員必備的工具。 foreach 迴圈簡化了遍歷集合的過程,使對每個項目執行操作變得更容易,而無需擔心底層細節。 我們將討論 foreach 的重要性、其使用情境以及如何在您的 C# 代碼中實現它。

foreach 迴圈介紹

foreach 迴圈是開發人員用於以簡潔且易讀的方式遍歷集合的一個強大工具。 它簡化了程式碼並降低了錯誤的可能性,因為不需要手動管理集合項目的索引或計數。 就變數宣告而言,foreach 迴圈有五個變數宣告,而 for 迴圈只有三個變數宣告。

foreach 的使用案例包括:

  • 匯總集合中的值
  • 在集合中搜尋項目
  • 修改集合中的元素
  • 對集合中的每個元素執行操作

了解集合

在 C# 中有不同類型的集合用於將一組項目存儲在單個對象中。 這些包括陣列、列表、字典等。 foreach 迴圈是一個有用的工具,可用於任何實現 IEnumerable 或 IEnumerable 介面的集合。

一些常見的集合類型包括:

  • 陣列:具有相同資料型別的固定大小元素集合。
  • 列表:具有相同數據類型的動態元素集合。
  • 字典:一組鍵值對,其中每個鍵都是唯一的。

    System.Collections.Generic 命名空間包含可與任何內建集合類使用的 ForEach 擴展方法

在 C# 中實現 foreach 語句

現在我們已經對集合和 for each 迴圈有了基本的理解,讓我們深入了解其語法,看看它在 C# 中是如何運作的。

For Each 迴圈語法


    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
VB   C#

在這裡, variableType 代表集合中項目的數據類型,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
VB   C#

輸出

當迴圈執行時,它會產生以下輸出。


    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
VB   C#

在上面的例子中,我們首先創建一個名為 numbers 的整數列表,並初始化一個變量 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
VB   C#

遍歷字典: 當使用 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
VB   C#

LINQ 和 for each: LINQ(語言集成查詢)是C#中的一個強大功能,可讓您以更具聲明性方式查詢和操作數據。 您可以將 LINQ 與 foreach 迴圈結合使用,以創建更具表達性且更高效的程式碼。

範例:


    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
VB   C#

將 IronPDF 功能新增至 C# 的 for each 教學

在本節中,我們將透過引入IronPDF,一個用於在C#中處理PDF文件的熱門庫,來擴展我們關於「C# for each」迴圈的教程。 我們將展示如何將 foreach 循環與 IronPDF 結合使用,以根據數據集合生成 PDF 報告。

IronPDF 介紹

IronPDF 文件檔案是一個強大的函式庫,用於在 C# 中創建、編輯和提取 PDF 文件中的內容。 它提供了一個易於使用的 API 來處理 PDF 文件,這使其成為需要將 PDF 功能整合到應用程式中的開發者的絕佳選擇。

IronPDF 的一些關鍵功能包括:

*從 HTML、URL 和圖像生成 PDF

*编辑现有的 PDF 文件

*從 PDF 中提取文字和圖片

*將註解、表單欄位和加密功能添加到 PDF 中

安裝 IronPDF

要開始使用IronPDF,您需要安裝IronPDF NuGet套件。 您可以按照以下說明進行操作:安裝 IronPDF.

使用IronPDF生成PDF報告並針對每個

在此範例中,我們將使用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
VB   C#

接下來,讓我們建立一個 Product 物件列表來生成 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)
}
VB   C#

現在,我們可以使用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.")
VB   C#

C# For Each(開發者如何使用)圖1 - 輸出結果

結論

在本教程中,我們已經探討了 "C# for each" 迴圈的基礎知識、重要性、使用案例以及如何在您的代碼中實現它。 我們還介紹了IronPDF,一個用於在C#中處理PDF文件的強大庫,並展示了如何結合IronPDF使用for each循環來生成基於數據集合的PDF報告。

不斷學習和提升您的技能,您將很快能夠充分利用 for each 迴圈和其他 C# 特性來創建穩健高效的應用程式。 IronPDF 提供一個IronPDF 免費試用測試該庫。 如果您決定購買,IronPDF 許可證起價為 $749。

< 上一頁
C# 字符串替換(開發人員如何運作)
下一個 >
C# 中的 Try/Catch(開發者的運作方式)

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >