.NET 幫助

C# 列印清單:快速教程

查克尼思·賓
查克尼思·賓
2024年5月20日
分享:

在 C# 中,列印清單是一項常見任務,可以透過多種方式完成,提供靈活性和自定義選項。 清單是 C# 中的基本資料結構,能夠列印其內容對於除錯、記錄或向使用者顯示資訊都至關重要。

在本文中,我們將探索在C#中打印列表的不同方法。

C# 中列表的基礎知識

在 C# 中,list 是一個可以增長或縮小大小的動態數組。它是 System.Collections.Generic 命名空間的一部分,提供在處理項目集合時的靈活性和效率。 以下程式碼建立了一個簡單的數字列表:

using System;
using System.Collections.Generic;
class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
    }
}
using System;
using System.Collections.Generic;
class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

使用迴圈列印清單

1. 使用 foreach 迴圈

列印清單元素的傳統且簡單的方法是使用foreach迴圈。這裡有一個簡單的例子:

using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
        Console.WriteLine("Printing list using foreach loop:");
        foreach (var number in numbers)
        {
            Console.WriteLine(number);
        }
    }
}
using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
        Console.WriteLine("Printing list using foreach loop:");
        foreach (var number in numbers)
        {
            Console.WriteLine(number);
        }
    }
}
Imports System
Imports System.Collections.Generic
Friend Class Program
	Public Shared Sub Main()
		Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
		Console.WriteLine("Printing list using foreach loop:")
		For Each number In numbers
			Console.WriteLine(number)
		Next number
	End Sub
End Class
$vbLabelText   $csharpLabel

這種方法簡潔且易讀,非常適合大多數情境。

2. 使用 for 迴圈

如果您需要對索引進行更多控制或希望有條件地打印元素,您可以使用for循環。以下是一個字串列表的例子:

using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
    // create list of strongly typed objects
        List<string> colors = new List<string> { "Red", "Green", "Blue", "Yellow" };
        Console.WriteLine("Printing list using for loop:");
        for (int index = 0; index < colors.Count; index++)
        {
            Console.WriteLine($"Color at index {index}: {colors[index]}");
        }
    }
}
using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
    // create list of strongly typed objects
        List<string> colors = new List<string> { "Red", "Green", "Blue", "Yellow" };
        Console.WriteLine("Printing list using for loop:");
        for (int index = 0; index < colors.Count; index++)
        {
            Console.WriteLine($"Color at index {index}: {colors[index]}");
        }
    }
}
Imports System
Imports System.Collections.Generic
Friend Class Program
	Public Shared Sub Main()
	' create list of strongly typed objects
		Dim colors As New List(Of String) From {"Red", "Green", "Blue", "Yellow"}
		Console.WriteLine("Printing list using for loop:")
		For index As Integer = 0 To colors.Count - 1
			Console.WriteLine($"Color at index {index}: {colors(index)}")
		Next index
	End Sub
End Class
$vbLabelText   $csharpLabel

當您需要訪問索引或想在列印過程中應用特定邏輯時,這種方法是有益的。

以相反順序列印列表元素

可以利用 Reverse 方法來逆向列印列表。 此方法會反轉列表中元素的順序,從而使您能夠遍歷並打印它們。

1. 使用 List.Reverse 方法

例如,您可以使用Reverse方法以反向順序打印列表,然後打印每個元素。

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
numbers.Reverse();
foreach (var number in numbers)
{
    Console.WriteLine(number);
}
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
numbers.Reverse();
foreach (var number in numbers)
{
    Console.WriteLine(number);
}
Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
numbers.Reverse()
For Each number In numbers
	Console.WriteLine(number)
Next number
$vbLabelText   $csharpLabel

2. 使用 LINQ OrderByDescending

您還可以使用 OrderByDescending 方法結合鍵來排列從 LINQ 泛型類別中指定的元素集合:

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var reversedNumbers = numbers.OrderByDescending(n => n);
foreach (var number in reversedNumbers)
{
    Console.WriteLine(number);
}
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var reversedNumbers = numbers.OrderByDescending(n => n);
foreach (var number in reversedNumbers)
{
    Console.WriteLine(number);
}
Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
Dim reversedNumbers = numbers.OrderByDescending(Function(n) n)
For Each number In reversedNumbers
	Console.WriteLine(number)
Next number
$vbLabelText   $csharpLabel

計算元素數量並打印

計算清單中元素的數量是一個常見的操作。 Count 屬性或 Count 方法可以用於此目的。 一旦你有了計數,你就可以輕鬆地列印它。

1. 使用 List.Count 屬性

List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
int count = names.Count;
Console.WriteLine($"Number of elements: {count}");
List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
int count = names.Count;
Console.WriteLine($"Number of elements: {count}");
Dim names As New List(Of String) From {"Alice", "Bob", "Charlie"}
Dim count As Integer = names.Count
Console.WriteLine($"Number of elements: {count}")
$vbLabelText   $csharpLabel

使用 LINQ Count 方法

List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
int count = names.Count();
Console.WriteLine($"Number of elements: {count}");
List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
int count = names.Count();
Console.WriteLine($"Number of elements: {count}");
Dim names As New List(Of String) From {"Alice", "Bob", "Charlie"}
Dim count As Integer = names.Count()
Console.WriteLine($"Number of elements: {count}")
$vbLabelText   $csharpLabel

在指定索引列印列表元素

在指定索引處列印元素涉及在該索引訪問清單。 這讓您可以訪問不同位置的元素,並確保您處理潛在的索引超出範圍的情況:

List<double> prices = new List<double> { 19.99, 29.99, 39.99 };
int indexToPrint = 1;
if (indexToPrint >= 0 && indexToPrint < prices.Count)
{
    Console.WriteLine($"Element at index {indexToPrint}: {prices[indexToPrint]}");
}
else
{
    Console.WriteLine("Index out of range.");
}
List<double> prices = new List<double> { 19.99, 29.99, 39.99 };
int indexToPrint = 1;
if (indexToPrint >= 0 && indexToPrint < prices.Count)
{
    Console.WriteLine($"Element at index {indexToPrint}: {prices[indexToPrint]}");
}
else
{
    Console.WriteLine("Index out of range.");
}
Dim prices As New List(Of Double) From {19.99, 29.99, 39.99}
Dim indexToPrint As Integer = 1
If indexToPrint >= 0 AndAlso indexToPrint < prices.Count Then
	Console.WriteLine($"Element at index {indexToPrint}: {prices(indexToPrint)}")
Else
	Console.WriteLine("Index out of range.")
End If
$vbLabelText   $csharpLabel

這些範例為在各種情境下列印列表元素提供了基礎。 list 類別提供了一些其他有用的方法,可以在列印中使用。

一些有用的方法是:

  • Remove: Remove() 方法會移除 C# 列表中的第一個匹配項
  • RemoveAll: RemoveAll() 方法用於根據指定的條件刪除元素。
  • RemoveRange:RemoveRange() 方法會根據指定的索引及計數參數移除一個範圍內的元素。
  • Add:Add() 方法只能在列表末尾添加一个元素。
  • AddRange: AddRange() 方法可用於將指定集合的元素新增至結尾。
  • Clear:Clear() 方法會移除清單中的所有元素。
  • 插入:Insert() 方法將元素插入到列表中指定的索引位置。
  • ForEach:ForEach() 方法用於對每個元素執行特定操作,例如高效地打印每個列表值。
  • ToArray: ToArray() 方法將列表複製到一個新的 var 陣列。

    現在,您可以選擇最適合您需求的方法,增強 C# 代碼的可讀性和效率。

String.Join 方法

String.Join 方法提供了一種簡潔的方式,可以將列表中的元素以指定的分隔符串聯成一個單一的字串。 這對於建立列表的格式化字串表示很有用。

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
string result = string.Join(", ", numbers);
Console.WriteLine(result);
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
string result = string.Join(", ", numbers);
Console.WriteLine(result);
Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
Dim result As String = String.Join(", ", numbers)
Console.WriteLine(result)
$vbLabelText   $csharpLabel

在這裡,列表numbers中的元素被連接成一個以逗號和空格分隔的字串,產生格式化的輸出。 在列印列表元素之前也可以使用排序方法。

使用 LINQ 進行進階場景設定

對於更複雜的場景,如果您希望在列印之前過濾、轉換或格式化元素,使用語言整合查詢(LINQ)會很有幫助。

using System.Linq;
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
List<int> evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
Console.WriteLine("Even numbers: " + string.Join(", ", evenNumbers));
using System.Linq;
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
List<int> evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
Console.WriteLine("Even numbers: " + string.Join(", ", evenNumbers));
Imports System.Linq
Private numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
Private evenNumbers As List(Of Integer) = numbers.Where(Function(n) n Mod 2 = 0).ToList()
Console.WriteLine("Even numbers: " & String.Join(", ", evenNumbers))
$vbLabelText   $csharpLabel

在這個例子中,使用 LINQ 從原始列表中篩選出偶數。Where() 方法使用 lambda 表達式進行篩選,並使用 ToList() 方法將結果轉換回列表。

C# 列印列表(開發人員的運作方式):圖 1 - 控制台輸出:偶數:2, 4

自訂物件與 ToString() 方法

如果您有自訂物件的清單,建議在物件類別中重寫ToString方法,以實現有意義的表示。 以下範例演示如何做到這一點:

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public override string ToString()
    {
        return $"{Name}, {Age} years old";
    }
}
class Program
{
    public static void Main()
    {
    List<Person> people = new List<Person>
    {
        new Person { Name = "Alice", Age = 30 },
        new Person { Name = "Bob", Age = 25 }
    };
    foreach (Person person in people)
    {
        Console.WriteLine(person);
    }
    }
}
class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public override string ToString()
    {
        return $"{Name}, {Age} years old";
    }
}
class Program
{
    public static void Main()
    {
    List<Person> people = new List<Person>
    {
        new Person { Name = "Alice", Age = 30 },
        new Person { Name = "Bob", Age = 25 }
    };
    foreach (Person person in people)
    {
        Console.WriteLine(person);
    }
    }
}
Friend Class Person
	Public Property Name() As String
	Public Property Age() As Integer
	Public Overrides Function ToString() As String
		Return $"{Name}, {Age} years old"
	End Function
End Class
Friend Class Program
	Public Shared Sub Main()
	Dim people As New List(Of Person) From {
		New Person With {
			.Name = "Alice",
			.Age = 30
		},
		New Person With {
			.Name = "Bob",
			.Age = 25
		}
	}
	For Each person As Person In people
		Console.WriteLine(person)
	Next person
	End Sub
End Class
$vbLabelText   $csharpLabel

通過覆寫ToString()方法,在Person類中控制類的實例如何表示為字串。 這增加了列表在列印時的可讀性。

C# 列印清單(開發者的運作方式):圖 2 - 主控台輸出

介紹 IronPrint - C# 列印庫

IronPrint 脫穎而出,是一個功能強大且可部署的打印庫,重點在於準確性、易用性和速度。 其跨平台支持和與各種文件格式的兼容性,使其成為.NET開發人員在其應用程式中尋求高效列印解決方案的寶貴工具。

C# 列印清單(開發人員的工作原理):圖3 - IronPrint for .NET:C# 列印庫

主要功能

以下是一些使 IronPrint 在 C# 應用程式中印刷實體文件脫穎而出的重要關鍵功能:

1. 跨平台相容性

  • .NET 版本支援:.NET 8、7、6、5 和 Core 3.1+
  • 作業系統:Windows(7+,Server 2016+)、macOS(10+)、iOS(11+)、Android API 21+(v5 "Lollipop")
  • 專案類型:行動裝置(Xamarin & MAUI & Avalonia)、桌面(WPF & MAUI & Windows Avalonia)、控制台(應用程式 & 函式庫)

2. 支援格式

  • 處理各種文件格式,包括 PDF、PNG、HTML、TIFF、GIF、JPEG、IMAGE、BITMAP。
  • 根據文件要求自訂列印設定。

3. 簡易安裝

使用 NuGet 套件管理器主控台安裝 IronPrint 函式庫:

Install-Package IronPrint
Install-Package IronPrint
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPrint
$vbLabelText   $csharpLabel

或者,您可以使用 Visual Studio 在您的項目中安裝它。 在方案總管中右鍵點擊該專案,然後點擊管理 NuGet 套件管理器。 在 NuGet 瀏覽分頁中,搜尋「ironprint」,從搜尋結果中選擇最新版的 IronPrint 套件,然後點擊安裝按鈕將其新增到您的專案中。

使用 IronPrint 列印:程式碼範例

1. 列印文件

IronPrint 提供文件的靜音列印,使用簡單的Print 方法。 如果實體印表機不可用,則使用作業系統指定的預設印表機進行列印。

using IronPrint;
// Print the document
Printer.Print("newDoc.pdf");
using IronPrint;
// Print the document
Printer.Print("newDoc.pdf");
Imports IronPrint
' Print the document
Printer.Print("newDoc.pdf")
$vbLabelText   $csharpLabel

2. 使用對話框列印

它還提供了一種專用的方法來顯示print 對話框,以便在列印時獲得更好的控制。 ShowPrintDialogAsync 方法也可以用來非同步列印。

using IronPrint;
// Show print dialog
Printer.ShowPrintDialog("newDoc.pdf");
using IronPrint;
// Show print dialog
Printer.ShowPrintDialog("newDoc.pdf");
Imports IronPrint
' Show print dialog
Printer.ShowPrintDialog("newDoc.pdf")
$vbLabelText   $csharpLabel

3. 自訂列印設定

IronPrint 提供各種列印設定,使用户能够精細地控制印刷文檔。

using IronPrint;
// Configure print settings
PrintSettings printSettings = new PrintSettings();
printSettings.Dpi = 150;
printSettings.NumberOfCopies = 2;
printSettings.PaperOrientation = PaperOrientation.Portrait;
// Print the document
Printer.Print("newDoc.pdf", printSettings);
using IronPrint;
// Configure print settings
PrintSettings printSettings = new PrintSettings();
printSettings.Dpi = 150;
printSettings.NumberOfCopies = 2;
printSettings.PaperOrientation = PaperOrientation.Portrait;
// Print the document
Printer.Print("newDoc.pdf", printSettings);
Imports IronPrint
' Configure print settings
Private printSettings As New PrintSettings()
printSettings.Dpi = 150
printSettings.NumberOfCopies = 2
printSettings.PaperOrientation = PaperOrientation.Portrait
' Print the document
Printer.Print("newDoc.pdf", printSettings)
$vbLabelText   $csharpLabel

若要更好地了解使用的類別和方法,請訪問API 參考頁面。

結論

在 C# 中列印清單涉及根據資料的複雜性和所需的輸出選擇合適的方法。 無論是使用簡單的迴圈、String.Join()、LINQ,還是為自定義物件自訂 ToString() 方法,了解這些方法可以讓您有效地在 C# 應用程式中顯示清單的內容。 嘗試這些技術,然後選擇最適合您具體使用情況的方法。

IronPrint 是您追求精確性、易用性和速度的首選列印函式庫。 無論您是構建 WebApps、使用 MAUI、Avalonia 或任何與 .NET 相關的項目,IronPrint 都能提供支持。 如需有關IronPrint的更多詳細資訊,請造訪此文件頁面

IronPrint 是一個付費的庫,但提供免費試用版。 從這裡下載該庫並嘗試使用!

查克尼思·賓
軟體工程師
Chaknith 致力於 IronXL 和 IronBarcode。他在 C# 和 .NET 方面擁有豐富的專業知識,協助改進軟體並支持客戶。他從用戶互動中獲得的洞察力有助於提高產品、文檔和整體體驗。
< 上一頁
精通 C# 打印功能:開發人員指南
下一個 >
C# 印刷控制台:逐步指南

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

查看許可證 >