在 C# 中使用新的 null 条件运算符时,我遇到了一个有趣的 System.NullReferenceException。如果“MyObject”为 null,以下代码将给出 NullReferenceException:
await this.MyObject?.MyMethod()
我预计如果“MyObject”为空,则根本不会调用“MyMethod”,或者我是否误解了空条件运算符的目的?
你可以加??
运算符所以如果?.
返回 null 任务,使用 CompletedTask 代替。
await (this.MyObject?.MyMethod() ?? Task.CompletedTask)
我预计如果“MyObject”为空,则根本不会调用“MyMethod”。
这是真的。这?.
运算符返回空任务而不是调用MyMethod
。发生空引用异常是因为您无法等待空任务。任务必须初始化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)