跳至页脚内容
.NET 帮助

C# 空合并(开发者如何使用)

空合并运算符 ?? 评估右侧操作数,并在左侧操作数为空引用时返回其结果; 否则,它返回其左侧操作数的值。 如果左侧操作数评估为不可为空的值类型,则空合并运算符(??)不会评估其右侧操作数。 赋值运算符 ??= 是一种空合并赋值运算符,它仅在左侧操作数评估为可以为空的类型值时将其右侧操作数的值赋给左侧操作数。 如果左侧的操作数评估为非空值,则空合并赋值运算符(??=)不会评估其右侧操作数。 空合并运算符类似于三元运算符。

在 C# 中,空合并运算符(??)是二元运算符。 作用于两个操作数的运算符称为二元运算符。 使用空合并运算符时,需要两个操作数,运算符评估每个操作数以确定结果。 现在我们将在 C# 中看到空合并和空条件运算符的用法。

如何使用 C# 空合并值类型

  1. 创建一个新的 C# 项目。
  2. 确保安装了适当的版本。
  3. 使用空合并运算符 ??
  4. 根据需要检查值或对象引用类型。
  5. 运行代码。

C# 中的空合并

C# 中的空值由 空合并运算符(??)默认处理,这是用于处理可能导致空值的可为空类型或表达式的联合理念。

语法

以下是空合并运算符的语法:

result = expression1 ?? expression2;
result = expression1 ?? expression2;
result = If(expression1, expression2)
$vbLabelText   $csharpLabel
  • expression1:此表达式可能产生一个空值。
  • expression2:如果 expression1 为 null,则是要使用的默认值或替代表达式。
  • result:存储合并操作结果的变量。

空合并运算符提供了一种简洁的方法来为可为空的类型分配默认值,其主要目的是简化代码并有效处理空数据。

好处

  • 简洁性:无需复杂的条件语句或三元运算符就能处理空值检查。
  • 代码可读性:通过明确说明如果返回 null 将提供默认值来改善。

在使用空合并运算符之前,确保比较的表达式类型匹配或兼容是至关重要的。

虽然有用,但运算符使用过度可能使代码难以理解。 谨慎使用它,当它有助于提高代码清晰度时才使用。

使用空合并运算符(??)进行可为空类型或需要默认值的场景处理时,是一种有效的工具,可以帮助编写更简洁易懂的代码。

空合并运算符 ?? 具有以下与类型相关的特性:

结果类型推断

如果表达式 1 和表达式 2 具有相同的类型,如以下代码中所示,空合并运算符的结果类型与这些操作数相同。

int? Value = null;
int result = Value ?? 10;
int? Value = null;
int result = Value ?? 10;
Dim Value? As Integer = Nothing
Dim result As Integer = If(Value, 10)
$vbLabelText   $csharpLabel

类型兼容性

如果表达式 1 和表达式 2 具有不同的类型,但一个可以隐式转换为另一个,则结果类型是可以隐式转换为的类型。

double? value = null;
int result = (int)(value ?? 5.5);
double? value = null;
int result = (int)(value ?? 5.5);
Imports System

Dim value? As Double = Nothing
Dim result As Integer = CInt(Math.Truncate(If(value, 5.5)))
$vbLabelText   $csharpLabel

类型提升

如果表达式 1 和表达式 2 的类型不能隐式转换,那么将根据 C# 的类型提升规则选择结果类型。

int? value = null;
long result = value ?? 100L;
int? value = null;
long result = value ?? 100L;
Dim value? As Integer = Nothing
Dim result As Long = If(value, 100L)
$vbLabelText   $csharpLabel

因此,参与的操作数的类型和 C# 类型转换规则决定了持有空合并运算符(??)结果的变量或表达式类型。 为了确保使用空合并运算符时正确处理类型和值,考虑兼容性和可能的类型转换是至关重要的。

IronPDF 中的空合并

安装IronPDF

要安装 IronPDF 库,请在包管理器中输入以下代码:

Install-Package IronPdf

C# 空合并(对开发人员的工作原理):图 1 - 安装 IronPDF

或者,您可以使用 NuGet 包管理器搜索包 "IronPDF"。 您可以从此与 IronPDF 相关的所有 NuGet 包的列表中选择并下载所需的包。

C# 空合并(对开发人员的工作原理):图 2 - NuGet 包管理器

使用空合并创建 PDF

IronPDF 是一个用于创建和处理 PDF 文档的 C# 库。 该库提供了用于处理 PDF 的功能,例如格式化、文本处理和图像管理。 “空合并”不是 IronPDF 独有的方法或功能; 而是一种语言功能,而不是库特定的操作。

但是,如果您正在 C# 代码中使用 IronPDF 或任何其他库,您可以利用 C# 语言提供的空合并运算符(??)。

例如,在处理可能返回 null 的 IronPDF 对象、可空值类型或属性时,您可以使用空合并运算符来处理空情况或提供默认值。

以下示例显示了如何将空合并运算符与 IronPDF 一起使用:

using IronPdf;
using IronPdf.Pages;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int? x = null;

            // Use the null-coalescing operator to provide a default value if x is null
            var outputstr = $@"square of <b>{x}</b> is <b>{Math.Sqrt(x ?? 30)}</b>";

            // Render the HTML string as a PDF using IronPDF
            var pdfcreate = ChromePdfRenderer.StaticRenderHtmlAsPdf(outputstr);

            // Save the generated PDF to the file system
            pdfcreate.SaveAs("demo.pdf");

            // Wait for a key press to prevent the console from closing immediately
            Console.ReadKey();
        }
    }
}
using IronPdf;
using IronPdf.Pages;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int? x = null;

            // Use the null-coalescing operator to provide a default value if x is null
            var outputstr = $@"square of <b>{x}</b> is <b>{Math.Sqrt(x ?? 30)}</b>";

            // Render the HTML string as a PDF using IronPDF
            var pdfcreate = ChromePdfRenderer.StaticRenderHtmlAsPdf(outputstr);

            // Save the generated PDF to the file system
            pdfcreate.SaveAs("demo.pdf");

            // Wait for a key press to prevent the console from closing immediately
            Console.ReadKey();
        }
    }
}
Imports IronPdf
Imports IronPdf.Pages

Namespace ConsoleApp1
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			Dim x? As Integer = Nothing

			' Use the null-coalescing operator to provide a default value if x is null
			Dim outputstr = $"square of <b>{x}</b> is <b>{Math.Sqrt(If(x, 30))}</b>"

			' Render the HTML string as a PDF using IronPDF
			Dim pdfcreate = ChromePdfRenderer.StaticRenderHtmlAsPdf(outputstr)

			' Save the generated PDF to the file system
			pdfcreate.SaveAs("demo.pdf")

			' Wait for a key press to prevent the console from closing immediately
			Console.ReadKey()
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

请记住,IronPDF(或任何库)不提供用于管理空条件运算符的特殊功能或方法; 而是基于通用 C# 语言功能和概念来使用空合并运算符来处理空条件运算符。 要了解有关 IronPDF 的功能和功能的更多信息,请访问 IronPDF 演示

输出:

C# 空合并(对开发人员的工作原理):图 3 - 前述示例输出

结论

总之,C# 的空合并运算符(??)是一个有用的特性,使处理表达式和赋值中的空值变得更容易和更高效。 该运算符通过为开发人员提供一种处理可能为空的值的方案的清晰方式来简化代码。 这使开发人员能够轻松地指定默认值或执行替代逻辑。 其适应性使代码更加简化和高效,简化了空测试并提高了可读性。

IronPDF 提供了永久许可证、升级选项、一年软件维护和三十天退款保证,所有这些都包含在 $799 Lite 软件包中。 用户有三十天时间在带水印的试用期内在真实应用环境中评估产品。 点击提供的 IronPDF 许可证 了解有关 IronPDF 成本、许可证和试用版的更多信息。 要了解更多关于 Iron Software 产品的信息,请查看 Iron Software 网站

常见问题解答

空合并运算符如何提高 C# 代码的可读性?

C# 中的空合并运算符 `??` 通过简化空检查和在遇到可空类型时提供默认值的简洁方法来提高代码的可读性。

C# 中空合并赋值运算符的目的是什么?

空合并赋值运算符 `??=` 仅在左操作数为空时,将其右操作数的值赋给左操作数,从而在处理可空类型时实现简化代码。

您能否提供一个在 C# PDF 应用程序中使用空合并运算符的示例?

在使用 IronPDF 的 C# PDF 应用程序中,您可以使用空合并运算符分配默认文件名,如果用户未指定:string pdfName = userInputFileName ?? "default.pdf";

使用空合并运算符时有哪些常见的陷阱?

一个常见的陷阱是未确保操作数之间的类型兼容性,这可能导致类型转换错误。在使用空合并运算符时,确保两个操作数的类型兼容至关重要。

空合并运算符如何与 C# 中的类型兼容性相关?

空合并运算符要求两个操作数类型兼容。如果不兼容,C# 会应用类型提升规则来确定结果类型,如果不小心管理,这可能导致意外行为。

空合并运算符对处理可空类型的开发人员有什么好处?

空合并运算符的好处在于,它允许开发人员通过提供默认值来高效处理可空类型,减少了冗长条件逻辑的需求。

开发人员如何使用空合并运算符来管理 C# 代码库中的空值?

开发人员可以在 C# 代码库中使用空合并运算符,在可能为空时赋值默认值,确保应用程序无空引用异常情况下继续平稳运行。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。