我有下面的代碼行:爲什麼在不使用可爲空的布爾值的情況下設置bool的值時可以使用null條件運算符?
user.Exists = await this.repository?.Exists(id);
Exists
在左手側是User
類的屬性。它的類型只是bool
,而不是bool?
。右側的Exists
方法是一種API方法,用於檢查存儲庫中是否存在給定實體。它返回Task<bool>
。我想檢查存儲庫是否爲空,所以我使用空條件運算符。我認爲,如果存儲庫爲空,那麼整個右側將返回null,這不能分配給bool
類型,但編譯器似乎沒有問題。它是否默認爲某個錯誤的值?
試圖實際運行此代碼?如果沒有,嘗試,你會看到。或者想像一下,如果Exists方法返回null而不是任務 – Evk
那麼會發生什麼呢''await'可能會拋出類型檢查,但是如果'repository'爲null,你會期望結果是什麼? –