我在C#中使用新的空条件运算符时遇到了一个有趣的System.NullReferenceException。如果“MyObject”为null,则以下代码给出了NullReferenceException:
await this.MyObject?.MyMethod()
我希望如果“MyObject”为空,或者我误解了空条件运算符的用途,就不会调用“MyMethod”吗?
答案 0 :(得分:16)
您可以添加??
运算符,这样如果?.
返回null任务,请使用CompletedTask。
await (this.MyObject?.MyMethod() ?? Task.CompletedTask)
我希望打电话给" MyMethod"如果" MyObject"是空的。
这是真的。 ?.
运算符返回null任务而不是调用MyMethod
。由于您无法等待null任务,因此会生成null引用异常。任务必须初始化。