为了账号安全,请及时绑定邮箱和手机立即绑定

C# null 条件运算符在调用异步任务时有什么不同吗?

C# null 条件运算符在调用异步任务时有什么不同吗?

C#
慕桂英3389331 2023-04-29 09:53:13
之间有什么区别吗await myObject.fooAsync();和await myObject?.fooAsync();当 myObject 为 null 时,它们似乎抛出相同的异常:未将对象引用设置为对象的实例。任何人都可以对此有所了解吗?
查看完整描述

1 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

当 myObject 为 null 时,它们似乎抛出相同的异常:未将对象引用设置为对象的实例。

当然,但出于不同的原因。

当您使用 null 条件运算符时,如果应用该运算符的任何元素为 null,则它所涉及的表达式的计算结果将为 null。

当您不使用运算符时,您会得到一个NullReferenceException, 因为您无法调用fooAsync()空引用。当您确实使用该运算符时,您会遇到相同的异常,但这次是因为您不能等待空引用。

这个故事的寓意是:你不能随便?.在你的代码中四处乱窜,然后期望它变得空安全。那不是它的作用。它只是常用的与 null 相关的表达式的简写。您仍然需要担心空引用,因为空条件运算符本身可以生成空引用。


查看完整回答
反对 回复 2023-04-29
  • 1 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信