.NET 帮助

如何有效使用 C# 打印行

查克尼特·宾
查克尼特·宾
2024年四月3日
分享:

在 C# 中打印行是控制台应用程序的一个基本方面,它涉及在控制台屏幕上显示文本或指定值。 无论您是在处理标准输出流还是格式化字符串,了解如何在C#控制台应用程序中高效地打印行都是至关重要的。

在本文中,我们将探讨与 C# 中打印行相关的各种方法和技巧。

打印行基础知识

在 C# 中,打印一行通常涉及使用 Console.WriteLine 方法。 我们先来看一个简单的例子:

using System;
class Program {
    public static void Main() {
        Console.WriteLine("Hello, C# Print Line!");
    }
}
using System;
class Program {
    public static void Main() {
        Console.WriteLine("Hello, C# Print Line!");
    }
}
Imports System
Friend Class Program
	Public Shared Sub Main()
		Console.WriteLine("Hello, C# Print Line!")
	End Sub
End Class
$vbLabelText   $csharpLabel

在上述代码中,Console.WriteLine语句输出指定的字符串值("Hello, C# Print Line!"),并在后面加上一个新行。这是通过WriteLine方法实现的,该方法将行终止符追加到输出的末尾。

行术语

行终止符是一个特殊字符或序列,用于表示一行的结束。两个最常见的行终止符是回车符('\r')和换行符('\n')。 在 C# 中,Console.WriteLine 方法负责根据操作系统使用适当的当前行终止符。

public static void Main() {
    Console.WriteLine("This is on the first line.");
    Console.WriteLine("This is on the second line.");
}
public static void Main() {
    Console.WriteLine("This is on the first line.");
    Console.WriteLine("This is on the second line.");
}
Public Shared Sub Main()
	Console.WriteLine("This is on the first line.")
	Console.WriteLine("This is on the second line.")
End Sub
$vbLabelText   $csharpLabel

在上述示例中,程序执行后,每个Console.WriteLine都会在 C# 控制台窗口中产生新行,从而生成指定的两行。

C# 打印行 (开发人员如何使用): 图 1 - 上一段代码的控制台输出

指定行术语

如果您需要显式控制行终止符,可以使用Console.Write方法并手动添加所需的行终止符:

public static void Main() {
    Console.Write("This is on the first line.");
    Console.Write('\r'); // Carriage return
    Console.Write("This is on the same line but very far left position.");
}
public static void Main() {
    Console.Write("This is on the first line.");
    Console.Write('\r'); // Carriage return
    Console.Write("This is on the same line but very far left position.");
}
Imports Microsoft.VisualBasic

Public Shared Sub Main()
	Console.Write("This is on the first line.")
	Console.Write(ControlChars.Cr) ' Carriage return
	Console.Write("This is on the same line but very far left position.")
End Sub
$vbLabelText   $csharpLabel

在此示例中,回车符('\r')用于将光标定位到行首,导致文本的第二部分出现在最左边的位置,即覆盖先前的输出。

C# Print Line(它如何为开发人员工作):图 2 - 控制台输出展示 \r

打印多行

要打印多行而不重复Console.WriteLine语句,可以使用可变长度参数列表:

public static void Main() {
    PrintLines("Line 1", "Line 2", "Line 3");
}
static void PrintLines(params string [] lines) {
    foreach (var line in lines) {
        Console.WriteLine(line);
    }
}
public static void Main() {
    PrintLines("Line 1", "Line 2", "Line 3");
}
static void PrintLines(params string [] lines) {
    foreach (var line in lines) {
        Console.WriteLine(line);
    }
}
Public Shared Sub Main()
	PrintLines("Line 1", "Line 2", "Line 3")
End Sub
Shared Sub PrintLines(ParamArray ByVal lines() As String)
	For Each line In lines
		Console.WriteLine(line)
	Next line
End Sub
$vbLabelText   $csharpLabel

PrintLines 方法允许您传递任意数量的新行来打印指定的字符串值。我们已创建该方法,该方法接受指定的字符串参数数组:

C# 打印行(开发人员如何使用):图 3 - 使用 PrintLines 方法的控制台输出

输出格式

格式化输出至关重要,尤其是在处理不同数据类型时。Console.WriteLine 方法提供了多个重载,可以接受指定的对象和格式信息:

public static void Main() {
    int answer = 42;
    string name = "John Doe";
    Console.WriteLine("The answer is {0}.", answer);
    Console.WriteLine("Hello, {0}!", name);
}
public static void Main() {
    int answer = 42;
    string name = "John Doe";
    Console.WriteLine("The answer is {0}.", answer);
    Console.WriteLine("Hello, {0}!", name);
}
Public Shared Sub Main()
	Dim answer As Integer = 42
	Dim name As String = "John Doe"
	Console.WriteLine("The answer is {0}.", answer)
	Console.WriteLine("Hello, {0}!", name)
End Sub
$vbLabelText   $csharpLabel

在此示例中,{0} 是指定对象的占位符(在此情况下为 answername),允许您在输出中包含变量数据并打印指定的格式信息。

C# 打印行(开发人员如何使用):图 4 - 显示格式的控制台输出

换行和 Unicode 字符

对于特殊的换行符或 Unicode 字符,可以使用转义序列。 您还可以使用 Console.WriteLine 打印任何 ASCII 文字或有效的 HTML 代码。例如,在同一字符串中加入换行符:

public static void Main() {
    Console.WriteLine("This is line 1.\nThis is line 2.");
    Console.WriteLine("Line 1\u000Aline 2");
}
public static void Main() {
    Console.WriteLine("This is line 1.\nThis is line 2.");
    Console.WriteLine("Line 1\u000Aline 2");
}
Imports Microsoft.VisualBasic

Public Shared Sub Main()
	Console.WriteLine("This is line 1." & vbLf & "This is line 2.")
	Console.WriteLine("Line 1" & vbLf & "line 2")
End Sub
$vbLabelText   $csharpLabel

在这里,\n\u000A, 指定的 Unicode 字符,都表示换行符字符,在每种情况下都会导致文本移到下一行。

C# 打印行(开发人员如何使用):图 5 - 控制台输出显示换行符

随机布尔值

以下代码在Console.WriteLine方法中使用字符串插值。 字符串插值是 C# 6.0 中引入的一项功能,它简化了在字符串字面量中嵌入表达式或变量并在控制台应用程序上正确显示指定布尔值的过程。

Random rnd = new Random();
for (int i = 1; i <= 5; i++)
{ 
    bool isTrue = rnd.Next(0, 2) == 1;
    Console.WriteLine($"True or False: {isTrue}");
}
Random rnd = new Random();
for (int i = 1; i <= 5; i++)
{ 
    bool isTrue = rnd.Next(0, 2) == 1;
    Console.WriteLine($"True or False: {isTrue}");
}
Dim rnd As New Random()
For i As Integer = 1 To 5
	Dim isTrue As Boolean = rnd.Next(0, 2) = 1
	Console.WriteLine($"True or False: {isTrue}")
Next i
$vbLabelText   $csharpLabel

从表达式返回的指定数据将打印在控制台应用程序上,如下所示:

C# 打印行(开发人员如何使用):图 6 - 使用字符串插值显示布尔值的控制台输出

打印不同的数字格式

打印各种数字格式是编程中的常见要求,尤其是在处理双精度浮点数和单精度浮点数时。 同样,Console.WriteLine 语句可以用来精确且轻松地打印它们。

双精度浮点运算

double doubleValue = 0.123456789;
Console.WriteLine($"Double Precision: {doubleValue:F7}");
double doubleValue = 0.123456789;
Console.WriteLine($"Double Precision: {doubleValue:F7}");
Dim doubleValue As Double = 0.123456789
Console.WriteLine($"Double Precision: {doubleValue:F7}")
$vbLabelText   $csharpLabel

在此示例中,F7 指定双精度值应在小数点后格式化为 7 位数字。 您可以调整 "F "后面的数字来控制精度。

现有字符串

string existingString = "Hello, C#!";
Console.WriteLine($"Existing String: {existingString}");
string existingString = "Hello, C#!";
Console.WriteLine($"Existing String: {existingString}");
Dim existingString As String = "Hello, C#!"
Console.WriteLine($"Existing String: {existingString}")
$vbLabelText   $csharpLabel

打印现有字符串非常简单。 只需使用Console.WriteLine并包含您想要显示的字符串。

单精度浮点运算

float singleValue = 0.123456789f;
Console.WriteLine($"Single Precision: {singleValue:F7}");
float singleValue = 0.123456789f;
Console.WriteLine($"Single Precision: {singleValue:F7}");
Dim singleValue As Single = 0.123456789F
Console.WriteLine($"Single Precision: {singleValue:F7}")
$vbLabelText   $csharpLabel

类似于双精度,这里使用F7格式说明符用于单精度浮点数。 您可以根据自己的精度要求调整 "F "后面的数字。

使用 C# 中的 IronPrint 解锁强大的打印功能;

打印文档是许多应用程序的一个基本方面,在 C# 中充分发挥打印的潜力时,IronPrint 作为一个功能丰富的通用库脱颖而出。

IronPrint 简介

IronPrint,由Iron Software开发,是一个为.NET生态系统设计的高级打印库,包括C#。 无论您是在开发桌面、移动还是网络应用程序,IronPrint 都能与您的 C# 项目无缝集成,为处理各种打印需求提供一套全面的工具。

C# 打印行(开发人员如何使用):图7 - IronPrint 网页

IronPrint 的主要功能

1. 跨平台兼容性:

IronPrint 支持各种操作系统,包括 Windows、macOS、Android 和 iOS。 这种跨平台兼容性可确保您的打印解决方案能够覆盖不同环境下的用户。

2. .NET 版本支持:

IronPrint for .NET 兼容 .NET Framework 4.6.2 及以上版本、.NET Core 3.1+ 以及最新的 .NET 版本,可覆盖广泛的 .NET 环境。

3. 项目类型支持:

IronPrint适用于不同类型的项目,包括移动端(Xamarin和MAUI)、桌面端(WPF和MAUI),以及控制台(应用程序和库)。 这种灵活性使其适用于各种应用架构。

4. 简单安装:

IronPrint 入门易如反掌。 您可以通过使用 NuGet 包管理器控制台并执行 Install-Package IronPrint 命令来快速安装该库。

IronPrint 的基本用法

以下是一个简单的示例,演示了在C#控制台应用程序中使用IronPrint 打印文档的简便性:

using IronPrint;
class Program
{
    static void Main()
    {
    Console.WriteLine("Printing Started...");
        // Silent printing of a document
        Printer.Print("document.pdf");
        // Or display a print dialog
        Printer.ShowPrintDialog("document.pdf");
    Console.WriteLine("Printing Completed...");
    }
}
using IronPrint;
class Program
{
    static void Main()
    {
    Console.WriteLine("Printing Started...");
        // Silent printing of a document
        Printer.Print("document.pdf");
        // Or display a print dialog
        Printer.ShowPrintDialog("document.pdf");
    Console.WriteLine("Printing Completed...");
    }
}
Imports IronPrint
Friend Class Program
	Shared Sub Main()
	Console.WriteLine("Printing Started...")
		' Silent printing of a document
		Printer.Print("document.pdf")
		' Or display a print dialog
		Printer.ShowPrintDialog("document.pdf")
	Console.WriteLine("Printing Completed...")
	End Sub
End Class
$vbLabelText   $csharpLabel

此输出显示了使用PrintShowPrintDialog方法打印文档。 如果未安装物理打印机,则使用默认打印机进行打印。

C# 打印行(开发人员如何使用):图 8 - 打印开始弹出窗口和保存打印输出弹出窗口

高级打印功能

IronPrint 的功能超出了基本打印任务的范围,并提供了以下高级功能:

  • 静默打印:使用Printer.PrintAsync打印文档而无需显示对话框。
  • 自定义打印设置:使用PrintSettings类微调打印参数。
  • 异步打印:异步执行打印操作,防止阻塞主线程。
  • 选择打印机:GetPrinterNames 方法允许您从可用打印机中进行选择,从而对打印过程进行更精细的控制。

特定平台调整

IronPrint 可让您为不同平台量身定制打印解决方案。 例如,当处理针对特定平台(如 Windows、Android、iOS 或 macOS)的 .NET Core 项目时,可以相应地调整项目文件中的 TargetFrameworks 属性。

要获取有关IronPrint的更多详细信息,请访问此文档API参考页面。

结论

在 C# 中打印行是控制台应用程序开发的基础技能。 无论是显示文本、格式化输出还是控制行结束符,了解各种可用的技术都将提高您创建高效、可读性强的控制台程序的能力。 探索由Console类提供的多种方法,尝试格式化选项,并利用C#的灵活性,在您的应用程序中生成清晰且结构良好的控制台输出。

对于寻求强大而灵活的打印功能的 C# 开发人员来说,IronPrint 是一个强大的盟友。 IronPrint 支持跨平台、与各种 .NET 版本兼容并具有高级打印功能,可简化各种 C# 应用程序中打印解决方案的实施。 无论您是为桌面、移动还是网络进行开发,IronPrint 都能为您提供所需的工具,让您在 C# 开发的世界中实现打印需求。

IronPrint 为商业用途提供免费试用。 从这里下载库并试用。

查克尼特·宾
软件工程师
Chaknith 负责 IronXL 和 IronBarcode 的工作。他在 C# 和 .NET 方面拥有深厚的专业知识,帮助改进软件并支持客户。他从用户互动中获得的洞察力,有助于提升产品、文档和整体体验。
下一步 >
C# 打印变量:简化代码

准备开始了吗? 版本: 2025.4 刚刚发布

查看许可证 >