我希望能夠給一個鍵值對串列作為函式中的引數,然后將此串列添加到字典中,(我也想控制,如果字典中已經存在鍵)我該怎么做? 也許每個回圈都有一個,但 Add() 函式需要 2 個引數。
public void func(List<KeyValuePair<string, int>> pairs)
{
foreach ( var pair in pairs)
{
dictionary.Add(pair); // this is not working
}
}
uj5u.com熱心網友回復:
您不能直接將 a 添加KeyValuePair<TKey,TValue>到字典中,您需要添加為鍵和值:
dictionary.Add(pair.Key, pair.Value);
如果您想用新值覆寫現有鍵,或插入新鍵/值(upsert 操作):
dictionary[pair.Key] = pair.Value;
如果您只想添加新的鍵/值對(不要干擾/覆寫現有資料),您可以先檢查鍵是否存在:
if(!dict.ContainsKey(pair.Key)) dictionary.Add(pair.Key, pair.Value);
或者,如果您的 .net 版本中提供了它,您可以 TryAdd:
dict.TryAdd(pair.Key, pair.Value) //returns false and does not add if the key exists
在后兩者中的任何一個中(如果專案存在則ContainsKey回傳true,或者如果專案存在則TryAdd回傳false),您可以使用該布林值來決定要做什么 - 例如,將字典中的資料與傳入專案中的資料合并
uj5u.com熱心網友回復:
Dictionary沒有方法,因此AddRange您無法從代碼中消除回圈。
至于KeyValuePair, 那么, 再一次,Dictionary沒有現成的多載, 但你至少有以下選項
Add手動分解的使用方法:dictionary.Add(pair.Key, pair.Value);創建將處理
KeyValuePairs 的擴展方法public static class Extensions { public static void Add<TKey, TValue>(this Dictionary<TKey, TValue> dict, KeyValuePair<TKey, TValue> value) { dict.Add(value.Key, value.Value); } }用法:
dictionary.Add(pair);
要處理“密鑰已存在”的情況,您可以使用dictionary.ContainsKey或僅捕獲Add方法拋出的例外(根據重復案例的頻率選擇最適合的情況并控制流程)
uj5u.com熱心網友回復:
您需要解構KeyValuePair羽絨并從那里添加它。
void func(Dictionary<string,int> dictionary, List<KeyValuePair<string, int>> pairs)
{
foreach (var (key, value) in pairs)
{
dictionary.Add(key,value);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/447804.html
