簡體   English   中英

如果Jobject在C#中為空,如何使變量為空

[英]How to make the variable empty if the Jobject is empty in C#

當 Jobject 為空時,我得到一個 Null 引用異常。

var subjects = item.SelectToken("$.subjects").ToObject<List<JObject>>()

我想在 Jobject 為空時將 var 主題設置為空而不會引發錯誤。

謝謝

var subjects = item.SelectToken("$.subjects")?.ToObject<List<JObject>>() ?? new List<JObject>();

列表<...>

List 是一個集合,您需要定義 List 中的內容。 List<string>List<object> ,或者,對於您的代碼, List<JObject>

SelectToken("$.subjects")?.

這意味着如果SelectToken返回 null,它會在不執行.ToObject的情況下停在那里,並返回null

這里的問題是SelectToken將在找不到任何對象時返回 null ,而當您對null執行.ToObject時,您會得到NullException 因此,在進一步使用它的屬性或函數之前,通常會檢查一個對象是否為空。

問號 - Null-Conditional Operator官方文檔)是一種快速的語法糖來實現這一點,而無需編寫類似的條件

if (... == null) 
{ ...convert to list... } 
else 
{ ...make empty list...}

?? 新列表()

不知道你說的empty是什么意思,如果你不想要null ,但是一個空的ListNull-coalescing Operator可能會來幫忙。

意思是 if 之前的語句?? null ,返回??之后的語句反而。

例如, string a = b ?? c string a = b ?? c表示:

string a = b != null ? b : c

但請注意,如果cnull ,則a仍然可以為null

它也是一種語法糖,可幫助您避免為這些經常需要的檢查編寫長語句。

暫無
暫無

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

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