我在C#中使用新的空条件运算符时遇到了一个有趣的System.NullReferenceException。如果“ MyObject”为null,则以下代码为我提供NullReferenceException:
await this.MyObject?.MyMethod()
我曾希望,如果“ MyObject”为null,则不会简单地调用“ MyMethod”,还是我误解了空条件运算符的目的?
您可以添加??
运算符,以便如果?.
返回空任务,请改用CompletedTask。
await (this.MyObject?.MyMethod() ?? Task.CompletedTask)
我曾希望,如果“ MyObject”为null,则不会直接调用“ MyMethod”。
确实如此。该?.
运算符返回空任务,而不是打电话MyMethod
。因为您无法等待空任务,所以会产生空引用异常。必须初始化任务。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句