2015-11-08 13 views
10

C#で新しいnull条件付き演算子を使用しているときに面白いSystem.NullReferenceExceptionが発生しました。C#null条件付き演算子でエラーが発生しました

await this.MyObject?.MyMethod() 

私は「MyObjectには」nullの場合「MyMethodは」への呼び出しは、単になされないであろうか、私は誤解だと予想ただろう:「MyObjectには」nullの場合、次のコードは、私とNullReferenceExceptionを与えますnull条件付き演算子の目的は?

答えて

9

??演算子を追加することができます。?.がnullタスクを返す場合は、代わりにCompletedTaskを使用します。

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

私は、「MyObjectには」nullの場合「MyMethodは」への呼び出しは、単に行われないだろうと予想しましたでしょう。

Thats true。 ?.演算子は、MyMethodを呼び出す代わりにnullタスクを返します。ヌル・タスクで待機することができないため、ヌル参照例外が作成されます。タスクを初期化する必要があります。

関連する問題