新闻中心

C#中的?.和??操作符是什么 C# null条件运算符和null合并运算符

2025-11-20
浏览次数:
返回列表
?. 是 null 条件运算符,用于安全访问对象成员,若对象为 null 则返回 null 而不抛异常;?? 是 null 合并运算符,为 null 值提供默认值。两者结合可有效避免 NullReferenceException,提升代码安全性与简洁性。

c#中的?.和??操作符是什么 c# null条件运算符和null合并运算符

?.?? 是 C# 中用于处理 null 值的两个非常实用的操作符,能有效减少空引用异常(NullReferenceException)并让代码更简洁。

null 条件运算符(?.)

也叫“null 传播运算符”,用于在访问对象成员前自动检查是否为 null。如果对象为 null,则整个表达式返回 null,而不会抛出异常。

常用于属性、方法调用或数组索引等场景。

例如:
  • string name = person?.Name; —— 如果 person 为 null,name 就是 null,不会报错。
  • int? length = text?.Length; —— text 为 null 时,length 也是 null。
  • person?.DoWork(); —— 只有 person 不为 null 时才调用 DoWork 方法。

对于多层嵌套,也可以连续使用: var city = customer?.Address?.City;,只要中间任意一环为 null,结果就是 null。

null 合并运算符(??)

用来为可能为 null 的表达式提供一个“后备值”。如果左边操作数不为 null,就取它;否则取右边的值。

小云雀 小云雀

剪映出品的AI视频和图片创作助手

小云雀 1949 查看详情 小云雀 例如:
  • string displayName = name ?? "Unknown"; —— name 为 null 时,displayName 取 "Unknown"。
  • int count = totalCount ?? 0; —— 当 totalCount 是 null(比如可空类型 int?),count 取 0。

这个操作符特别适合设置默认值,简化 if-else 判断。

结合使用 ?. 和 ??

这两个操作符经常一起用,实现安全访问并提供默认值。

例如:
  • int length = text?.Length ?? 0; —— 先安全获取 Length,如果 text 为 null 或 Length 不存在,最终取 0。
  • var handler = OnCompleted?.Invoke() ?? false; —— 安全调用事件,避免空引用。

基本上就这些。?. 防止空引用,?? 提供默认值,两者配合能让 C# 代码更健壮、简洁。不复杂但容易忽略。

以上就是C#中的?.和??操作符是什么 C# null条件运算符和null合并运算符的详细内容,更多请关注其它相关文章!


# 这两个  # 网站建设能赚钱吗  # 浙江seo关键词优化  # 招聘网站网络推广靠谱吗  # 外贸网站建设公司优势  # 网站运营优化培训  # 天津品牌网站推广方案  # 珠海网站建设模板  # 正规的福州seo渠道  # b2b网站免费推广平台哪个好做  # 梧州口碑营销网络推广中心  # c#  # 相关文章  # 而不  # 迭代  # 最佳选择  # 如何使用  # 不为  # 默认值  # 遍历  # 运算符 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 如何优雅地扩展SprykerGlue后端API授权逻辑,使用spryker/glue-backend-api-application-authorization-connector-extension  Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】  c++如何实现一个简单的软件渲染器_c++从零开始的3D图形学  小红书怎么解除第三方平台绑定_小红书多平台登录解绑方法介绍  拷贝漫画电脑版官网入口 拷贝漫画(PC版)在线直达  Eclipse怎么运行工程_Eclipse工程运行配置说明  CSS自定义字体样式被系统字体替换怎么办_font-face方式指定font-display控制渲染策略  html怎么在cmd下运行php文件_cmd运行html中php文件方法【教程】  PHP中高效并行检查多链接状态的教程  解决Python logging 中 datefmt 导致时间戳固定不变的问题  J*a最大堆Heapify方法修复:索引计算与边界条件深度解析  C++如何实现一个智能指针_手动实现C++ shared_ptr的引用计数功能  包子漫画官方网站阅读入口-包子漫画在线漫画官网直达链接  必由学官网首页入口 必由学教师网页版登录指南  J*aScript map 方法中处理循环元素为空数组的策略  windows10怎么查看硬盘序列号_windows10硬盘id查询命令  C++如何实现异步操作_C++11使用std::future和std::async进行异步编程  Mac终端命令大全_Mac常用Terminal指令速查  c++中的std::launder有什么实际用途_c++对象生命周期与指针优化  如何使用J*aScript精确选择并批量修改特定父元素下子链接的样式  Excel如何用迷你图显趋势_Excel用迷你图显趋势【趋势小图】  抖音DOU+怎么投最有效 抖音付费推广的ROI提升技巧  顺丰快件物流信息 官方网站查询入口  漫蛙漫画网页端入口 漫蛙2官方正版漫画站点  怎样在Excel中做仪表盘_Excel仪表盘设计与关键指标展示方法  深入理解字体排版:Adobe光学字偶距与CSS字偶距的差异与实现  Highcharts 雷达图径向轴标签定制指南:利用多Y轴实现数值标注  谷歌浏览器浏览体验优化_谷歌浏览器新版直连永久可用提示  天猫双十一预售商品怎么退款_天猫双十一预售退款操作指南  Win10怎么设置静态IP地址 Win10手动配置IP地址步骤【指南】  微信语音通话掉线如何解决 微信语音通话稳定优化方法  新三国志曹操传110级星符试炼夏侯渊极难攻略  解决Tabulator日期时间排序问题的专业指南  KFC早餐时段怎么领特惠代码_KFC早餐订餐优惠代码获取与使用说明  铁路12306的积分有效期是多久_铁路12306积分有效期说明  R星幕后开发视频泄露 包含《GTA6》等多款大作  163邮箱登录密码 163邮箱忘记密码找回  微博网页版主页入口 微博官方网站免登录访问  如何使用纯J*aScript判断Input元素是否在特定类容器内  一加手机电池耗电快怎么办_一加手机电池耗电快的解决方法  win11如何卸载Windows更新补丁 Win11解决更新导致系统不稳定的问题【修复】  c++20的std::jthread是什么_c++可中断线程与RAII式管理  网易大神账号申诉需要多久_网易大神账号申诉流程说明  在J*a中如何使用Exception包装底层异常_异常包装与信息传递方法说明  2306选座时如何选靠窗位置_12306选座靠窗座位查看方法解析  钉钉视频会议画面卡顿如何解决 钉钉会议画面优化方法  机构:以往存储涨价周期小米利润率实际上有所改善 能转嫁给消费者等  曝R星经典之作开发图 设计简陋但信息密集!  sublime如何只显示或隐藏特定类型文件_sublime侧边栏文件过滤  腾讯视频怎么使用多账号家庭管理_腾讯视频家庭多账号统一管理与权限分配教程 

搜索