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

之间有什么区别吗

await myObject.fooAsync();

await myObject?.fooAsync();

当 myObject 为 null 时,它们似乎抛出相同的异常:未将对象引用设置为对象的实例。任何人都可以对此有所了解吗?


慕桂英3389331
浏览 146回答 1
1回答

白板的微信

当 myObject 为 null 时,它们似乎抛出相同的异常:未将对象引用设置为对象的实例。当然,但出于不同的原因。当您使用 null 条件运算符时,如果应用该运算符的任何元素为 null,则它所涉及的表达式的计算结果将为 null。当您不使用运算符时,您会得到一个NullReferenceException, 因为您无法调用fooAsync()空引用。当您确实使用该运算符时,您会遇到相同的异常,但这次是因为您不能等待空引用。这个故事的寓意是:你不能随便?.在你的代码中四处乱窜,然后期望它变得空安全。那不是它的作用。它只是常用的与 null 相关的表达式的简写。您仍然需要担心空引用,因为空条件运算符本身可以生成空引用。
打开App,查看更多内容
随时随地看视频慕课网APP