当前位置: 首页 > news >正文

C#中的空合并运算符与空合并赋值运算符:简化空值处理

在C#编程中,处理可能为null的值是一项常见的任务,尤其是在涉及数据库查询、Web服务调用或任何可能返回缺失数据的场景中。为了简化这类操作并提高代码的可读性,C# 8 引入了两个非常实用的运算符:空合并运算符 (??)空合并赋值运算符 (??=),以及空条件运算符 (?.)。本篇博客将详细介绍这三种运算符的使用方法及其优势。

空合并运算符 (??)

空合并运算符 (??) 用于在第一个操作数为 null 时返回第二个操作数,否则返回第一个操作数的值。这在需要提供默认值以避免 null 引发的异常时特别有用。

语法

variable ?? alternativeValue;

示例

string name = null;
string displayName = name ?? "匿名用户";
Console.WriteLine(displayName); // 输出: 匿名用户

空合并赋值运算符 (??=)

空合并赋值运算符 (??=)?? 运算符的赋值版本,它允许你为可能为 null 的变量提供一个默认值。如果变量为 null,则将其赋值为右边的值;否则保持不变。

语法

variable ??= alternativeValue;

示例

string nickname = null;
nickname ??= "CoolCoder";
Console.WriteLine(nickname); // 输出: CoolCoderstring username = "DeveloperDave";
username ??= "Newbie";
Console.WriteLine(username); // 输出: DeveloperDave(未改变,因为原本不为null)

空条件运算符 (?.)

空条件运算符 (?.) 使你能够在访问对象成员之前安全地检查该对象是否为 null。如果对象为 null,则表达式立即返回 null 而不是继续执行成员访问,从而避免了 NullReferenceException

语法

object?.member

示例

Person person = null;
string jobTitle = person?.JobTitle;
Console.WriteLine(jobTitle); // 输出: null(而不是引发异常)person = new Person { JobTitle = "Software Engineer" };
jobTitle = person?.JobTitle;
Console.WriteLine(jobTitle); // 输出: Software Engineer

结论

C# 的 ????=?. 这三个运算符极大地简化了空值的处理逻辑,使得代码更加简洁、易于阅读和维护。通过这些运算符,你可以更优雅地处理可能的 null 值,减少代码中的条件语句,提升开发效率。随着C#语言的不断进化,这些现代特性正逐渐成为编写高质量C#代码的标准实践。

http://www.lryc.cn/news/366168.html

相关文章:

  • 数据结构:哈夫曼树及其哈夫曼编码
  • 微信如何防止被对方拉黑删除?一招教你解决!文末附软件!
  • jar增量打包
  • 智慧医院物联网建设-统一管理物联网终端及应用
  • Debian的常用命令
  • 矩阵1-范数与二重求和的求和可交换
  • Python笔记 - *args和**kwargs
  • 微信小程序实现图片转base64
  • os和os.path模块
  • 链表题目练习----重排链表
  • 【杂记-浅谈XSS跨站脚本攻击】
  • VMware虚拟机与MobaXterm建立远程连接失败
  • mysql undolog管理
  • 【Linux】进程2——管理概念,进程概念
  • 【C++】植物大战僵尸杂交版自动存档——防闪退存档消失
  • 通过Excel,生成sql,将A表数据插入B表
  • 如何在MySQL中实现upsert:如果不存在则插入?
  • MyBatis中 set标签
  • mysql自带分页
  • 小学一年级数学上册,我终于学完了
  • 使用wireshark分析tcp握手过程
  • 在ArcGIS中,矢量数据有.shp,.mdb和.gdb,为啥建议使用gdb?
  • C++STL---stack queue模拟实现
  • Spring Cloud系列——使用Sentinel进行微服务保护
  • Android开机动画,framework修改Bootanimation绘制文字。
  • 2024河南高考作文ChatGPT
  • 整理好了!2024年最常见 20 道分布式、微服务面试题(一)
  • 要想数据形成好的数据集,必须数据治理(目的之一是防止大模型产生灰色数据等),用于炼丹(训练数据私有化模型)的数据才是好数据
  • 外部mysql导入
  • Qwen-VL论文阅读