[英]Check if dictionary value of key is null
我嘗試使用字典並需要檢查鍵的值(稱為名稱)是否為空,如果是,則使用一些默認字符串作為我的鍵的值,例如“未知”。
我知道我可以用string.Length == 0
檢查一個字符串,但我的問題是我有一個 object 作為值,我很難捕捉到它。
那是我的代碼:
IDictionary<string, object> parameters = new Dictionary<string, object>();
string Name = de.Properties["Name"].Value.ToString(); //Name is sometimes empty and sometimes not
parameters.Add("Name", Name);
更新:
IDictionary<string, object> parameters = new Dictionary<string, object>();
string Name = de.Properties["Name"].Value.ToString();
if (parameters.TryGetValue("Name", out var Name))
{
parameters.Add("Name", Name ?? "unknown");
}
null
和空字符串是完全不同的東西。 null
意味着沒有值,而空字符串是一個字符串,它只是空的。 你不能在空值上調用.ToString()
或.Length
,你會得到一個異常,因為沒有值來處理那個調用。
您可以使用Dictionary.TryGetValue來檢查是否存在並同時檢索值。
之后,如果您真的想將所有內容轉換為字符串,則可以使用空條件運算符?.
如果name
為空,則調用ToString()
而不拋出。 如果name
為 null,則整個表達式name?.ToString()
計算結果也為null
。
然后您可以使用空合並運算符??
用默認值替換空值:
var de= new Dictionary<string, object?>();
de["Name1"]=null;
de["Name2"]=42;
if(de.TryGetValue("Name2",out var name))
{
var valueAsString=name?.ToString() ;
parameters.Add("Name2", valueAsString ?? "unknown");
}
如果您只想用默認值替換空值,則不需要ToString()
:
if(de.TryGetValue("Name2",out var name))
{
parameters.Add("Name2", name ?? "unknown");
}
如果要檢查 null 或為空,可以使用String.IsNullOrEmpty :
if(de.TryGetValue("Name2",out var name))
{
var newValue=String.IsNullOrEmpty(name)
? "unknown"
: name.ToString(); //Only if we want to format to strings
parameters.Add("Name2", newValue);
}
最后,如果要替換parameters
字典中的現有鍵,請使用
parameters["Name2]= newValue;
string result= (string)(YourDictionaryName.TryGetValue(key, out var value)? YourDictionaryName["YourParameterName"].ToString(): "");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.