.NET 帮助

C# 双问号(对开发者的作用)

发布 2024年一月14日
分享:

在 C# 编程中,高效处理空值是一个常见的难题。 输入双问号操作符(??)该译文将介绍.NET、Java、Python 或 Node.js 的一个强大功能--"空凝聚操作符"。 新开发人员经常会对双问号操作符的含义产生疑问。 请查看此来源以获取更多准确答案:*理解 C# 中的两个问号***

在本文中,我们将深入探讨 C# 双问号操作符的复杂性,探索其功能、用例以及它如何改变开发人员处理代码中空值的方式。

了解基础知识:C#中的空合并运算符

空值聚合是一个编程概念,即在遇到空引用时分配一个默认值。 传统上,开发人员使用条件运算符或三元运算符来实现空凝聚。 C# 空凝聚操作符为处理这些情况提供了一种更简洁、更具表现力的方法。

.NET、Java、Python 或 Node js 的精髓

空凝聚操作符(??)是一个二进制运算符,如果左侧操作数不为空,则返回左侧操作数; 否则,将返回右侧操作数。 它提供了一种简洁的语法,用于在处理可空类型或潜在空引用时提供默认的非空值。

简单的用法和语法

null coalescing 赋值运算符的基本语法包括在两个表达式之间放置 ??。 下面是一个简单的例子:

int? nullableValue = possiblyNullInt ?? defaultValue;
int? nullableValue = possiblyNullInt ?? defaultValue;
Dim nullableValue? As Integer = If(possiblyNullInt, defaultValue)
VB   C#

在这种情况下,如果possiblyNullInt不是空值,nullableValue将取其值。 否则,将默认使用指定的 默认值。 对于那些对nullableValue的变量类型感到好奇的人来说,这是一个可空类型的值。 这意味着nullableValue也可以设置为空值,而普通整数则无法做到这一点,因为它只会返回一个缺失值。

简化空检查

Null Coalescing Operator 的主要优点之一是能够简化 null 检查,使代码更加简洁易读。 考虑以下没有操作员的情况:

string result;
if (possiblyNullString != null)
{
    result = possiblyNullString;
}
else
{
    result = "DefaultValue";
}
string result;
if (possiblyNullString != null)
{
    result = possiblyNullString;
}
else
{
    result = "DefaultValue";
}
Dim result As String
If possiblyNullString IsNot Nothing Then
	result = possiblyNullString
Else
	result = "DefaultValue"
End If
VB   C#

使用双问号操作符后,等价代码变为

string result = possiblyNullString ?? "DefaultValue";
string result = possiblyNullString ?? "DefaultValue";
Dim result As String = If(possiblyNullString, "DefaultValue")
VB   C#

模板代码的减少提高了代码的清晰度,降低了出现与空有关的错误的几率。

默认值的连锁操作符

双问号操作符可以连锁使用,以提供一系列后备值,从而实现层叠式默认方法。

int result = possiblyNullInt ?? fallbackInt ?? 0;
int result = possiblyNullInt ?? fallbackInt ?? 0;
Dim result As Integer = If(If(possiblyNullInt, fallbackInt), 0)
VB   C#

在本例中,如果 possiblyNullInt 为空,运算符将检查 fallbackInt。 如果两者都为空,最后的备用方案是。 这意味着结果不一定是可归零类型,因为回退总是整数。

方法参数中的应用

双问号操作符在指定方法参数的默认值时特别有用。

public void PrintMessage(string message = null)
{
    string defaultMessage = "Default Message";
    string finalMessage = message ?? defaultMessage;
    Console.WriteLine(finalMessage);
}
public void PrintMessage(string message = null)
{
    string defaultMessage = "Default Message";
    string finalMessage = message ?? defaultMessage;
    Console.WriteLine(finalMessage);
}
Public Sub PrintMessage(Optional ByVal message As String = Nothing)
	Dim defaultMessage As String = "Default Message"
	Dim finalMessage As String = If(message, defaultMessage)
	Console.WriteLine(finalMessage)
End Sub
VB   C#

在此方法中,如果信息为空,则使用默认值 "默认信息"。

与三元运算符集成

双问号操作符可与三元操作符结合使用(? :)进行更高级的条件处理。

int? nullableValue = possiblyNullInt ?? (anotherNullableInt.HasValue ? anotherNullableInt.Value : 0);
int? nullableValue = possiblyNullInt ?? (anotherNullableInt.HasValue ? anotherNullableInt.Value : 0);
Dim nullableValue? As Integer = If(possiblyNullInt, (If(anotherNullableInt.HasValue, anotherNullableInt.Value, 0)))
VB   C#

在这里,如果 possiblyNullInt 为空,则会检查 anotherNullableInt 是否有值。 如果是,则使用该值; 否则,默认为

介绍IronPDF

*使用 IronPDF 生成 PDF****是一个多功能 C# 库,旨在简化处理 PDF 的复杂性。 无论您是要生成发票、报告还是其他任何文档,IronPDF 都能让您在 C# 应用程序中直接将 HTML 内容无缝转换为精美、专业的 PDF。

IronPDF 的主要特点是其HTML 至 PDF 转换工具此外,还要确保保持布局和风格。 它可以根据网页内容生成 PDF,非常适合报告、发票和文档。 该功能支持将 HTML 文件、URL 和 HTML 字符串转换为 PDF。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
VB   C#

C# 双问号(开发人员如何使用):图 1 - IronPDF 网页

安装 IronPDF:快速入门

要将 IronPDF 整合到您的 C# 项目中,首先要安装 IronPDF NuGet 软件包。 在软件包管理器控制台中执行以下命令:

Install-Package IronPdf

或者,在 NuGet 软件包管理器中找到 "IronPDF",然后继续安装。

使用 IronPDF 生成 PDF

使用 IronPDF 创建 PDF 是一个简单明了的过程。 考虑以下示例:

var htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
// Create a new PDF document
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("C:/GeneratedDocument.pdf");
var htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
// Create a new PDF document
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("C:/GeneratedDocument.pdf");
Dim htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>"
' Create a new PDF document
Dim pdfDocument = New IronPdf.ChromePdfRenderer()
pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("C:/GeneratedDocument.pdf")
VB   C#

在本例中,IronPdf 被用来将 HTML 内容渲染成 PDF 文档,然后保存到指定位置。 访问此处探索 IronPDF 代码示例更多创建 PDF 文档方法的资源。

C# 双问号操作符:巧妙处理默认值

双问号操作符(??)C# 中的 "null "是一个功能强大的工具,用于处理可空类型并在必要时提供默认值。 让我们来探讨一下如何将此操作符与 IronPDF 无缝集成,以增强非空值类型的文档生成场景。

与 IronPDF 配置集成

考虑这样一种情况:您需要为 IronPdf 设置默认配置,如页面大小或页边距。 在没有明确定义具体配置时,可以使用双问号操作符提供默认值。

var customPageSize = GetUserDefinedPageSize(); // Assume this method might return null
var defaultRenderOptions = new ChromePdfRenderOptions();
defaultRenderOptions.PaperSize = customPageSize ?? IronPdf.Rendering.PdfPaperSize.A4;
// Create a new PDF document with optional custom page size
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderingOptions = defaultRenderingOptions;
pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("GeneratedDocument.pdf");
var customPageSize = GetUserDefinedPageSize(); // Assume this method might return null
var defaultRenderOptions = new ChromePdfRenderOptions();
defaultRenderOptions.PaperSize = customPageSize ?? IronPdf.Rendering.PdfPaperSize.A4;
// Create a new PDF document with optional custom page size
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderingOptions = defaultRenderingOptions;
pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("GeneratedDocument.pdf");
Dim customPageSize = GetUserDefinedPageSize() ' Assume this method might return null
Dim defaultRenderOptions = New ChromePdfRenderOptions()
defaultRenderOptions.PaperSize = If(customPageSize, IronPdf.Rendering.PdfPaperSize.A4)
' Create a new PDF document with optional custom page size
Dim pdfDocument = New IronPdf.ChromePdfRenderer()
pdfDocument.RenderingOptions = defaultRenderingOptions
pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("GeneratedDocument.pdf")
VB   C#

在本例中,如果 GetUserDefinedPageSize() 返回空,则使用默认的 A4 页面大小。

使用默认文本动态生成内容

假设您正在为 PDF 动态生成内容,而某些文本元素可能是空的。 双问号操作符可用于优雅地处理空值并提供默认文本。

string dynamicHeaderText = GetDynamicHeaderText(); // Assume this method might return null
string headerText = dynamicHeaderText ?? "Hello World!";
// Incorporate the header text into HTML content
var dynamicHtmlContent = $@"
    <html>
    <body>
        <h1>{headerText}</h1>
        <!-- Other dynamic content -->
    </body>
    </html>
";
// Create a new PDF document with dynamic content
var dynamicPdfDocument = new IronPdf.ChromePdfRenderer();
dynamicPdfDocument.RenderHtmlAsPdf(dynamicHtmlContent).SaveAs("DynamicDocument.pdf");
string dynamicHeaderText = GetDynamicHeaderText(); // Assume this method might return null
string headerText = dynamicHeaderText ?? "Hello World!";
// Incorporate the header text into HTML content
var dynamicHtmlContent = $@"
    <html>
    <body>
        <h1>{headerText}</h1>
        <!-- Other dynamic content -->
    </body>
    </html>
";
// Create a new PDF document with dynamic content
var dynamicPdfDocument = new IronPdf.ChromePdfRenderer();
dynamicPdfDocument.RenderHtmlAsPdf(dynamicHtmlContent).SaveAs("DynamicDocument.pdf");
Dim dynamicHeaderText As String = GetDynamicHeaderText() ' Assume this method might return null
Dim headerText As String = If(dynamicHeaderText, "Hello World!")
' Incorporate the header text into HTML content
Dim dynamicHtmlContent = $"
    <html>
    <body>
        <h1>{headerText}</h1>
        <!-- Other dynamic content -->
    </body>
    </html>
"
' Create a new PDF document with dynamic content
Dim dynamicPdfDocument = New IronPdf.ChromePdfRenderer()
dynamicPdfDocument.RenderHtmlAsPdf(dynamicHtmlContent).SaveAs("DynamicDocument.pdf")
VB   C#

在这里,如果 GetDynamicHeaderText() 返回空值,标题文本默认为 "Hello World!"在 PDF 中; 否则,GetDynamicHeaderText 中的文本将无法翻译。()方法已保存。

C# 双问号(开发人员如何使用):图 2 - 上述代码中的默认标题

如需生成更多动态内容并探索 IronPDF 的更多功能,请访问IronPDF 文档page.

结论

总之,C# 双问号操作符为空值凝聚提供了一种精确而富有表现力的解决方案。 它的简洁性和可读性使其成为在各种情况下处理空值的重要工具。 无论是处理可空类型、潜在的空引用,还是提供默认值,双问号操作符都能让开发人员在 C# 编程的动态世界中精确驾驭空。

C# 双问号操作符与 IronPDF 无缝集成,可增强文档生成工作流中的默认处理。 无论是设置配置还是处理动态内容,操作员都能提供一种简洁而富有表现力的方式来浏览空值,并确保生成 PDF 的过程流畅且可预测。 利用 IronPDF 的强大功能和双问号操作符的精妙之处,清晰高效地提升您的 C# 文档生成能力。

IronPDF 的开发是免费的,但需要获得完整功能许可在做出决定之前,先测试一下它的全部功能。

< 前一页
C# 主构造函数(开发人员如何使用)
下一步 >
Sqlite C# .NET(开发者如何使用)

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

免费NuGet下载 总下载量: 11,781,565 查看许可证 >