簡體   English   中英

在檢查 c# 中的 Any() 之前檢查 IEnumerable 是否不是 null

[英]To check if IEnumerable is not null before checking for Any() in c#

我遇到的情況是,在檢查 Any()(是否包含任何元素)之前,我得到一條語句來檢查集合是否實際上是 null。

if(myIEnumerableCollection?.Any() ?? false)
   {
      // do this logic 
   }

我知道 myIEnumerableCollection 已被檢查,如果它為 null(c# 6 語法,如果我錯了請糾正我),則拋出參數 null 異常。 我想了解此語句的評估內容,因為語法讀起來有點混亂。

我的理解是:

  1. 檢查集合是否不是 null,應該是假的。

  2. 如果第一個條件不為真(myIEnumerableCollection?不為空),則為序列中的任何元素與 Any() 鏈接。

  3. 如果表達式 myIEnumerableCollection?.Any() 為真(這是我感到困惑的地方,它如何評估為真) go 在 if 邏輯中,否則評估為假。

任何鏈接或參考或解釋都會有所幫助。 我有點生疏了,這看起來像是一個非常基本的問題,我擔心的是表達式的可讀性。

謝謝你。

?. null 條件運算符語法跳過表達式的 rest 的計算,如果左側值為 null,則計算 null。所以myIEnumerableCollection?.Any()會給出bool? 即 null,true 或 false。 ?? false ?? falsenull 合並運算符,將 null-case 轉換為 false。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM