[英]Is there a reason C# doesn't support short-hand, null-conditional checking in logical evaluations?
我經常發現自己編寫的代碼在檢查屬性的值之前檢查null
。 最簡單的形式是:
if (someInstance != null && someInstance.SomeBooleanProperty)
我們是否有理由不能使用空條件運算符 ( ?.
) 來簡化檢查它后面的屬性是否是這樣的布爾值?
if (someInstance?.SomeBooleanProperty)
上面的示例無法編譯,因為它的計算結果為null
,而不是true
或false
,因此您會收到錯誤消息,說沒有可用於bool?
隱式bool?
bool
。
我們總是可以強制轉換,或者直接檢查一個值,例如:
if (someInstance?.SomeBooleanProperty == false)
這工作得很好,老實說,它並沒有那么多額外的代碼。 只是,在我看來,隨着 C# 多年來引入的所有簡化,我不禁想知道我們是否仍然不能使用像這樣的簡寫 null 條件?
我認為僅使用?.
的固有問題?.
當someInstance
為 null 時,條件評估結果是什么。 這就是編譯器抱怨的原因以及您需要空檢查條件和非空布爾評估的原因。 someInstance?.SomeBooleanProperty ?? false
someInstance?.SomeBooleanProperty ?? false
將滿足這兩個條件。 ?.
單獨不能/不應該推斷出這個邏輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.