之间有什么区别吗await myObject.fooAsync();和await myObject?.fooAsync();当 myObject 为 null 时,它们似乎抛出相同的异常:未将对象引用设置为对象的实例。任何人都可以对此有所了解吗?
1 回答

白板的微信
TA贡献1883条经验 获得超3个赞
当 myObject 为 null 时,它们似乎抛出相同的异常:未将对象引用设置为对象的实例。
当然,但出于不同的原因。
当您使用 null 条件运算符时,如果应用该运算符的任何元素为 null,则它所涉及的表达式的计算结果将为 null。
当您不使用运算符时,您会得到一个NullReferenceException
, 因为您无法调用fooAsync()
空引用。当您确实使用该运算符时,您会遇到相同的异常,但这次是因为您不能等待空引用。
这个故事的寓意是:你不能随便?.
在你的代码中四处乱窜,然后期望它变得空安全。那不是它的作用。它只是常用的与 null 相关的表达式的简写。您仍然需要担心空引用,因为空条件运算符本身可以生成空引用。
- 1 回答
- 0 关注
- 109 浏览
添加回答
举报
0/150
提交
取消