我在 C# 中使用新的 null 条件运算符时遇到了一个有趣的 System.NullReferenceException。如果“MyObject”为空,以下代码会给我一个 NullReferenceException:
await this.MyObject?.MyMethod()
如果“MyObject”为空,我本以为不会调用“MyMethod”,还是我误解了空条件运算符的用途?
最佳答案
您可以添加 ??
运算符,因此如果 ?.
返回空任务,请改用 CompletedTask。
await (this.MyObject?.MyMethod() ?? Task.CompletedTask)
I would've expected that the call to "MyMethod" would simply not be made if "MyObject" is null.
没错。 ?.
运算符返回空任务而不是调用 MyMethod
。空引用异常是因为您不能等待空任务。必须初始化任务。
关于空条件运算符和等待的 C# 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33592547/