私は次のコード行があります。左側にnullのboolを使用せずにboolの値を設定するときにnull条件演算子を使用できるのはなぜですか?
user.Exists = await this.repository?.Exists(id);
Exists
はUser
クラスのプロパティです。そのタイプはbool
で、bool?
ではありません。右側のExists
メソッドは、特定のエンティティがリポジトリに存在するかどうかを確認するAPIメソッドです。それはTask<bool>
を返します。私は、リポジトリが最初にnullであるかどうかを確認したいので、null条件付き演算子を使用します。私は、リポジトリがnullの場合、右辺全体がNULLを返すことになり、bool
型に代入することはできませんが、コンパイラはそれで問題ないと思います。それは何らかの形で偽の値にデフォルトするだけですか?
このコードを実際に実行しようとしましたか?そうでない場合は、試してみてください。 ExistsメソッドがTaskの代わりにnullを返すとどうなるか想像してください。 – Evk
'await'は型チェックを捨てているかもしれませんが、' repository'がnullの場合、どのような結果になると思いますか? –