[英]Dictionary ContainsKey and get value in one function
有沒有辦法調用Dictionary<string, int>
一次來找到一個鍵的值? 現在我正在打兩個電話。
if(_dictionary.ContainsKey("key") {
int _value = _dictionary["key"];
}
我想這樣做:
object _value = _dictionary["key"]
//but this one is throwing exception if there is no such key
如果沒有這樣的密鑰或者通過一次調用獲取值,我會想要null嗎?
您可以使用TryGetValue
int value;
bool exists = _dictionary.TryGetValue("key", out value);
如果TryGetValue
包含指定的鍵,則返回true,否則返回false。
選中的答案是正確答案。 這是為提供者user2535489提供正確的方法來實現他的想法:
public static class DictionaryExtensions
{
public static TValue GetValue<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key, TValue fallback = default(TValue))
{
TValue result;
return dictionary.TryGetValue(key, out result) ? result : fallback;
}
}
然后可以用於:
Dictionary<string, int> aDictionary;
// Imagine this is not empty
var value = aDictionary.GetValue("TheKey"); // Returns 0 if the key isn't present
var valueFallback = aDictionary.GetValue("TheKey", 10); // Returns 10 if the key isn't present
為了您的目的,這可能應該這樣做。 就像你在問題中提到的那樣,將所有內容(null或值)全部放入對象中:
object obj = _dictionary.ContainsKey("key") ? _dictionary["key"] as object : null;
要么..
int? result = _dictionary.ContainsKey("key") ? _dictionary["key"] : (int?)null;
我想,你可以做這樣的事情(或寫一個更清晰的擴展方法)。
object _value = _dictionary.ContainsKey(myString) ? _dictionary[myString] : (int?)null;
我不確定我是否會特別高興使用它,但是通過結合null和你的“Found”條件,我會認為你只是將問題轉移到一個空的檢查稍微下線。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.