IRONSOFTWAREHOME

了解 C# 空凝聚操作符

[[academy-video-youtube({"vid":"aIp0jUr6A24", "start_time":"0", "title":"了解 C# 空凝聚操作符(? 和 ??=)", "创作者": "Gerald Versluis", "时长": "12分43秒"})]]

C# 中的 null coalescing 操作符 (??) 允许开发人员简化 null 检查逻辑,减少代码冗余并提高可读性。 该操作符提供了一种简洁的方法,可在遇到 null 时分配回退值,而无需编写冗长的 if-else 条件。 在本文中,我们将跟随 Gerald Versluis 的视频"了解 C# 空凝聚操作符(? 和??=)"。我们将分解视频的关键部分,分析 Gerald 如何演示这一实用的 C# 功能。

简介

在视频的开头,Gerald 介绍了空值凝聚运算符,它是 C# 的一项强大功能,可以大大减少空值检查所需的代码行数。 他强调,该操作符简化了条件检查,使代码更具可读性。 为了说明这些工具的优势,Gerald 通过一个示例应用程序,实现并解释了 null coalescing 操作符的各种用例。

示例应用程序大纲

Gerald 首先设置了一个简单的控制台应用程序。 他提到,在以前的视频中,他曾使用 try.dot.net 网站进行演示,但由于版本限制(仅支持 C# 7),他改用 Visual Studio for Mac。 他保证这些示例也能在 Visual Studio for Windows 上使用。

为了准备演示,Gerald 创建了一个基本的Name属性:

public class Person 
{
    public string Name { get; set; }
}

然后,他初始化了该类的一个实例,以展示 null coalescing 运算符在实际场景中的功能。

用空-凝聚操作符(?

Gerald 现在演示如何使用空凝聚运算符 (??) 来简化空检查逻辑。 他将Name属性赋值为null,然后使用?? 以提供后备值:

var name = person.Name ?? "Gerald";

Gerald 解释说,在使用该操作符之前,开发人员会使用 if 语句:

string name;
if (person.Name == null)
{
    name = "Gerald";
}
else
{
    name = person.Name;
}

通过使用??,这个逻辑被简化为一行。当person.Name为null时,赋值为"Gerald"; 否则,person.Name保留其值。 他运行程序并确认输出正确无误。

空凝聚以抛出异常

接下来,Gerald 将探讨另一个用例:使用空凝聚运算符抛出异常。 他演示了如何在遇到 null 时抛出异常,而不是提供一个后备值:

var name = person.Name ?? throw new ArgumentNullException(nameof(person.Name), "Name cannot be null");

Gerald 强调指出,这在处理方法参数或属性(不允许使用 null)时尤其有用。 他解释说,这一功能是在 C# 7 或 8 中引入的,具体取决于项目设置。 当ArgumentNullException,有效防止了未预期的空引用。

空凝聚复合赋值 (??=).

Gerald 接着讨论了 null coalescing 复合赋值 (??=) 操作符,该操作符提供了一种更加简化的默认值赋值方式。 而不是写成

if (person.Name == null)
{
    person.Name = "Gerald";
}

他简化了这一点:

person.Name ??= "Gerald";

Gerald 解释说,??= 只有在左侧操作数为空的情况下才赋值。 如果person.Name已有值,则保持不变。 该操作符对于初始化字段或确保变量永不为空特别有用。

与 Null 条件操作符结合使用

在最后一节中,Gerald 演示了空凝聚运算符如何与空条件运算符 (?.) 结合使用。 空条件运算符允许安全访问属性,而不会引发NullReferenceException。 他举了一个例子:

var length = person?.Name?.Length ?? 0;

Gerald 解释说,这确保了如果Name为null,结果默认为0而不是抛出异常。 这种组合在处理空引用类型或复杂对象层次结构时非常有用。

结论

在整个视频中,Gerald Versluis 有效地解释了空凝聚运算符 (??) 和空凝聚复合赋值 (??=) 的强大功能。 他演示了这些运算符如何取代传统的 null 检查,使代码更加简洁易读。 通过利用这些功能,开发人员可以编写出更简洁、更高效的 C# 应用程序。

如果您有兴趣了解这些概念的实际应用,请查看 Gerald Versluis 的完整视频 "了解 C# 空凝聚操作符(? 和 ?=)"。

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

OR
bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户