5

次のコード行があります。

user.Exists = await this.repository?.Exists(id);

Exists左側はUserクラスのプロパティです。その型は justboolであり、notbool?です。Exists右側のメソッドは、特定のエンティティがリポジトリに存在するかどうかを確認する API メソッドです。返しますTask<bool>。最初にリポジトリが null かどうかを確認したいので、null 条件演算子を使用します。リポジトリがnullの場合、右側全体がnullを返すだけで、bool型に割り当てることができないと思いましたが、コンパイラはそれで問題ないようです。どういうわけか、デフォルトでfalse値になりますか?

4

1 に答える 1

8

問題は待機です。nullable は await の前に発生しているため、 await (this.repository?.Exists(id))this.repository が null の場合、 に変わりawait (null?.Exists(id))await (null)クラッシュするようになります。?. に到達してTask<bool>それを作ることができませんTask<bool?>

したがって、適切なブール値または例外を取得します。

于 2016-11-11T23:19:48.077 に答える