.NET 帮助

C# 打印列表:快速教程

在 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

2.使用 LINQ 计数方法

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() 方法只能在列表末尾添加一个元素。
  • AddRange: AddRange() 方法可用于将指定集合的元素添加到末尾。
  • Clear: Clear() 方法从列表中移除所有元素。
  • Insert: Insert() 方法在指定索引处将元素插入列表中。
  • ForEach: ForEach() 方法用于对每个元素执行特定操作,例如,高效打印每个列表值。
  • ToArray: ToArray() 方法将列表复制到一个新的 var 数组中。

    现在,您可以选择最适合您要求的方法,提高 C# 代码的可读性和效率。

字符串连接方法

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 提供多种print 设置,允许对打印文档进行精细控制。

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.5 刚刚发布

查看许可证 >