Search code examples
c#nullreferenceexceptionnull-conditional-operator

C# Error with null-conditional operator and await


I'm experiencing an interesting System.NullReferenceException whilst using the new null-conditional operator in C#. The following code gives me a NullReferenceException if "MyObject" is null:

await this.MyObject?.MyMethod()

I would've expected that the call to "MyMethod" would simply not be made if "MyObject" is null, or am I misunderstanding the purpose of the null-conditional operator?


Solution

  • You can add ?? Operator so if ?. returns null task use CompletedTask instead.

    await (this.MyObject?.MyMethod() ?? Task.CompletedTask)
    

    I would've expected that the call to "MyMethod" would simply not be made if "MyObject" is null.

    Thats true. the ?. operator returns null task instead of calling MyMethod. the null reference exception is made because you cant await on null task. The task must be initialized.